Numpy数组中是否有一种方法可以使用两个索引(要链接)来更新数组的值?
这是一个简单的示例:
import numpy as np
if __name__ == '__main__':
x = np.array([0,0,0,0,0,0,0,0,0,0])
print('1: ', x) #1: [0 0 0 0 0 0 0 0 0 0]
indx = np.array([0,2,4,6,8])
x[indx] += 1
print('2: ', x) #[1 0 1 0 1 0 1 0 1 0]
indx2 = np.array([0, 2, 4])
x[indx][indx2] += 1
print('3: ', x) #[1 0 1 0 1 0 1 0 1 0]
一开始,我使用 indx 数组更新了x,并且可以使用,但是当我创建另一个名为 indx2 的“子索引”数组并尝试更新x时,没有做任何更改!
最佳答案
不要链接索引,它可能会创建视图而不是索引。相反,您应该执行以下操作:
x[indx[indx2]] += 1
解释:
indx[indx2]
返回一个带有值np.array
的[0,4,8]
,然后x[...]
只是正常的索引编制,您可以根据需要更新值。这不取决于indx[indx2]
是视图还是实际索引。关于python - 在NumPy中设置值链接两个切片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59160423/