Удалить или заменить матрицу в Python - PullRequest
3 голосов
/ 17 октября 2019

Привет, у меня есть эта матрица

например,

import numpy as np
a= np.arange(9).reshape(3, 3)

[[1. 2. 3. ]
 [4. 5. 6. ]
 [7. 8. 9. ]]

как мне удалить самое нижнее значение выбранного столбца (например, col = 1), а остальные значения сверху получаютсянажмите вниз, и если есть свободное место, поставьте «0»

, чтобы матрица стала

[[1. 0. 3. ]
 [4. 2. 6. ]
 [7. 5. 9. ]]

Ответы [ 3 ]

1 голос
/ 17 октября 2019

Сверните второй столбец, а затем установите первый элемент столбца в ноль

a = np.arange(1,10).reshape(3, 3)

a[:, 1] = np.roll(a[:, 1], 1)
a[0, 1] = 0

print(a)

Вывод:

[[1 0 3]
 [4 2 6]
 [7 5 9]]
0 голосов
/ 17 октября 2019
In [215]: a = np.arange(1,10).reshape(3,3)                                      

Создайте временный массив для хранения значений нового столбца:

In [216]: temp = np.zeros(a.shape[0],a.dtype)                                   
In [217]: temp[1:] = a[:-1,1]                                                   

скопируйте его в a:

In [218]: a[:,1] = temp                                                         
In [219]: a                                                                     
Out[219]: 
array([[1, 0, 3],
       [4, 2, 6],
       [7, 5, 9]])
0 голосов
/ 17 октября 2019

Я предлагаю вам использовать np.pad здесь:

Например,

>>> import numpy as np
>>> a= np.arange(1, 10).reshape(3, 3)
>>> print a
[[1 2 3]
 [4 5 6]
 [7 8 9]]
>>> a[:,1] = np.pad(a[:,1], pad_width=1, mode='constant')[:a.shape[1]]
>>> print a
[[1 0 3]
 [4 2 6]
 [7 5 9]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...