在Python中删除或替换矩阵

3

你好,我有这个矩阵

例如

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. ]]

a = np.arange(9).reshape(3, 3) 这将提供一个以0开头的矩阵。 - Stan11
3个回答

1

将第二列滚动,然后将该列的第一个元素设置为零。

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
我建议您在这里使用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]]

0
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]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接