python - 从多维 numpy 数组中选择

标签 python arrays multidimensional-array matrix numpy

我有一个形状为 (nt, nz, ny, nx) 的多维数组 a。维度是时间、z、y、x。对于每次 x 和 y,我都在形状为 (nt, ny, nx) 的新索引数组 J 中选择了适当的 z。 J 包含沿我要选择的高度维度的索引。使用 Python,我可以循环执行此操作:

b=J.copy()
for t in range(nt):
   for y in range(ny):
      for x in range(nx):
         z=J[t,y,x]
         b[t,y,x]=a[t,z,y,x]

但我想更快地执行此操作,而无需循环。这可能是微不足道的,但我无法理解它。有人吗?

最佳答案

您可以将 numpy.indices() 与高级索引一起使用:

t, y, x = numpy.indices(J.shape)
b = a[t, J, y, x]

关于python - 从多维 numpy 数组中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701811/

相关文章:

arrays - 如何获取嵌套numpy数组的各列的所有平均值?

ios - 如何在 Swift 中使用 3d 数组作为 UICollectionView 的数据源?

python - 如何从二维列表中获取列数和行数

python - 获取 `Wall Clock'时间流逝的秒数

python - 在Selenium中查找隐藏的超链接(Python网络爬虫)

javascript - 在数组上设置状态在 native react 中不起作用?

php - 带 id 的多维关联数组

c - 递归读取数组

python:如何删除空行?

python - 更改 pycharm 中终端的 virtualenv