我需要将处理后的数据写入多维数组缓存,但是我不知道如何轻松地做到这一点。
一个简单的例子:
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
但是索引方法会产生一个副本,并且数据实际上并未写入。 谢谢,我在寻找是否有一种简单直接的方法。
答案 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