是否有一种 numpy 方法可以在不使用循环的情况下执行以下操作?
A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
I = np.array([0, 1, 0, 1, 1])
V = np.array([6, 6, 6, 6, 6])
我想更新A,使其在I指定的相应索引中具有6。所以A变成...
A = np.array([[6,1],[2,6],[6,3],[4,6],[5,6]])
尝试了以下方法,但没有成功..
A[I] = V
A[:,I] = V
最佳答案
尝试:A[np.arange(len(A)), I] = V
:
In [15]: import numpy as np
In [16]: A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
In [17]: I = np.array([0, 1, 0, 1, 1])
In [18]: V = np.array([6, 6, 6, 6, 6])
In [19]: A[np.arange(len(A)), I] = V
In [20]: A
Out[20]:
array([[6, 1],
[2, 6],
[6, 3],
[4, 6],
[5, 6]])
关于python - 从另一个数组更新 numpy 二维数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60358835/