通过索引写入多维数组

时间:2019-02-18 15:44:30

标签: python numpy

我需要将处理后的数据写入多维数组缓存,但是我不知道如何轻松地做到这一点。

一个简单的例子:

x = np.random.rand(5,2,5,3)
ind = np.array([True,True,False,True,False])
dat = np.random.rand(3,3,3)

我希望的样子:

x[ind,-1][:,ind] = dat

但是索引方法会产生一个副本,并且数据实际上并未写入。 谢谢,我在寻找是否有一种简单直接的方法。

1 个答案:

答案 0 :(得分:2)

使用np.ix_-

x[np.ix_(ind,[-1],ind)] = dat[:,None]

每两行再用np.ix_-

r,c = np.ix_(ind,ind)
x[r,-1,c] = dat

另一种使用整数索引的掩码-

indx = np.flatnonzero(ind)
x[indx[:,None],-1,indx] = dat