我正在尝试使用numpy和一些稀疏矩阵进行矩阵计算。为此,我想忽略矩阵中的零,而只访问一些值,但是我还需要覆盖它们。
import numpy as np
a=np.random.rand(5,5)
#does not change a:
a[[1,2],...][...,[1,2]]=np.array([[0,0],[0,0]])
#just changes (1,1) and (2,2)
a[[1,2],[1,2]]=np.array([0,0])
我想用零覆盖[1,1],[1,2],[2,1],[2,2]。
答案 0 :(得分:2)
我认为您需要这样的东西:
import numpy as np
a = np.arange(25).reshape((5, 5))
i, j = np.ix_([1, 2], [1, 2])
a[i, j] = np.zeros((2, 2))
print(a)
# [[ 0 1 2 3 4]
# [ 5 0 0 8 9]
# [10 0 0 13 14]
# [15 16 17 18 19]
# [20 21 22 23 24]]
答案 1 :(得分:0)
任何给定索引列表的一种通用方法可能是简单地循环遍历要分配0的索引对
import numpy as np
a=np.random.rand(5,5)
indices = [[1,1],[1,2],[2,1],[2,2] ]
for i in indices:
a[tuple(i)] = 0
print (a)
array([[0.16014178, 0.68771817, 0.97822325, 0.30983165, 0.60145224],
[0.10440995, 0. , 0. , 0.09527387, 0.38472278],
[0.93199524, 0. , 0. , 0.11230965, 0.81220929],
[0.91941358, 0.96513491, 0.07891327, 0.43564498, 0.43580541],
[0.94158242, 0.78145344, 0.73241028, 0.35964791, 0.62645245]])