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/

10-09 23:39