我有一个 3d 数组,我想得到一个以索引 indx 为中心的大小为 (2n+1) 的子数组。使用切片我可以使用
y[slice(indx[0]-n,indx[0]+n+1),slice(indx[1]-n,indx[1]+n+1),slice(indx[2]-n,indx[2]+n+1)]
如果我想为每个维度设置不同的尺寸,这只会变得更丑。有没有更好的方法来做到这一点。
最佳答案
您不需要使用slice
构造函数,除非您想要存储切片对象供以后使用。相反,您可以简单地执行以下操作:
y[indx[0]-n:indx[0]+n+1, indx[1]-n:indx[1]+n+1, indx[2]-n:indx[2]+n+1]
如果您想在不单独指定每个索引的情况下执行此操作,您可以使用列表理解:
y[[slice(i-n, i+n+1) for i in indx]]
关于numpy - 如何在numpy中获取子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30103983/