首页 > 解决方案 > 按索引写入多维数组

问题描述

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

一个简单的例子:</p>

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

我想要的样子:</p>

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

但是索引的方法会产生一个副本,实际上并没有写入数据。我正在寻找是否有一种简单明了的方法可以做到这一点,谢谢。

标签: pythonnumpy

解决方案


使用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

推荐阅读