numpy - 如何在numpy中获取子数组

标签 numpy sub-array

我有一个 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/

相关文章:

python - 将 numpy 图像转换为 QPixmap

python - numpy 中 bool 掩码的反向影响

c - 通过删除子数组使数组左右两边的和相等

arrays - 使用二进制搜索查找最大子数组

python - 为什么 scipy.spatial.ckdtree 运行速度比 scipy.spatial.kdtree 慢

python - 将缺失值附加到 CSV 文件

python - 修改python中子数组的值

javascript - d3.js:在数组中的对象中提取数组

python - 通过在 O(n) 或更短的时间内从列表中的任何索引开始,两只 Frog 可以创建的最大距离?

python - 使用 numpy 来操作纯 python 列表