我遇到了一个关于numpy矩阵的问题。给定一个矩阵A和一个索引列表L,我试图为索引列表中的每个i,j设置A[i,j] = 1
我有下面的代码部分:
A = np.array([
[0,0,0,0,0,0],
[0,0,1,0,0,0],
[0,1,0,1,1,0],
[0,0,1,0,0,0],
[0,0,1,0,0,1],
[0,0,0,0,1,0]])
x=(A[2,:])
indexes = np.where(x==1)[0]
A[indexes,:][:,indexes] = 1
*** print(A[indexes,:][:,indexes])
print(A)
行***不更新原始A中的值,而如果我用一个切片(A[indexes,:]=1)替换它,id会更改A
有人能解释一下两者之间的区别吗?我应该如何解决这个问题?
1条答案
按热度按时间n6lpvg4x1#
索引是一个简单的数组:
使用双索引:
这不能用于设置,因为
A[index,:]
是copy
,而不是view
。可以使用
ix_
选取相同的图元。使用它来设置元素:
并检查:
执行与
ix_
相同的操作:https://numpy.org/doc/stable/user/basics.indexing.html