【问题标题】:Numpy advanced indexingNumpy 高级索引
【发布时间】:2017-03-18 10:15:32
【问题描述】:

我有以下形状的数组

voxel_grids : (128, 32, 32, 32)
indices : (128, 3, 1024)

我想构造一个数组scalar (128, 1024) 这样

scalar[i,j] = voxel_grids[i, indices[i, 0, j], indices[i, 1, j], indices[i,2,j]]

有没有使用 numpy(高级)索引的直接方法?

【问题讨论】:

    标签: python numpy indexing slice


    【解决方案1】:

    你可以这样做 -

    m = voxel_grids.shape[0]
    out = voxel_grids[np.arange(m)[:,None],indices[:,0],indices[:,1],indices[:,2]]
    

    另一种方法是将indices 中的三个切片提取到三个变量中,并将它们用于索引。这可能不会比前一个更有效,但可能更容易观察。如下图-

    m = voxel_grids.shape[0]
    x,y,z = indices.swapaxes(0,1)
    out = voxel_grids[np.arange(m)[:,None],x,y,z]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多