我正在尝试将完整的索引集提取到 N 维立方体中,这似乎np.mgrid
正是我所需要的。例如,np.mgrid[0:4,0:4]
生成一个 4 x 4 矩阵,其中包含相同形状数组中的所有索引。
问题是我想根据另一个数组的形状在任意数量的维度上执行此操作。即,如果我有一个任意维度的数组a
,我想做类似的事情idx = np.mgrid[0:a.shape]
,但不允许使用这种语法。
是否可以构建我需要np.mgrid
工作的切片?或者是否有其他一些优雅的方式来做到这一点?以下表达式可以满足我的需要,但它相当复杂并且可能效率不高:
np.reshape(np.array(list(np.ndindex(a.shape))),list(a.shape)+[len(a.shape)])