我有一个 numpy 零数组。具体来说,假设它是 2x3x4:
x = np.zeros((2,3,4))
并假设我有一个 2x3 的随机整数数组,从 0 到 3(x 的第三维的索引)。
>>> y = sp.stats.distributions.randint.rvs(0, 4, size=(2,3))
>>> y
[[2 1 0]
[3 2 0]]
我如何有效地执行以下分配(编辑:不使用 for 循环并且适用于 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.]]])
谢谢,詹姆斯