我有一個numpy的零數組。爲了具體,假設它的2x3x4:在numpy數組中分配值
x = np.zeros((2,3,4))
和假設我有隨機整數的2×3陣列從0到3(x的第三維的索引)。
>>> y = sp.stats.distributions.randint.rvs(0, 4, size=(2,3))
>>> y
[[2 1 0]
[3 2 0]]
如何有效地執行以下任務(編輯:一些不適合循環使用,適用於X與任意數量的尺寸,並在每個維度任意數量的元素)?
>>> x[0,0,y[0,0]]=1
>>> x[0,1,y[0,1]]=1
>>> x[0,2,y[0,2]]=1
>>> x[1,0,y[1,0]]=1
>>> x[1,1,y[1,1]]=1
>>> x[1,2,y[1,2]]=1
>>> x
array([[[ 0., 0., 1., 0.],
[ 0., 1., 0., 0.],
[ 1., 0., 0., 0.]],
[[ 0., 0., 0., 1.],
[ 0., 0., 1., 0.],
[ 1., 0., 0., 0.]]])
謝謝, 詹姆斯
這肯定比我使用的for循環更快,它看起來可以很好地縮放每個維度的維數和元素數量。謝謝。 – user1857751