我numpy.mgrid
用来生成“坐标索引数组”
y, x = np.mgrid[0:3, 0:2]
print x
array([[0, 1],
[0, 1],
[0, 1]])
在许多情况下,我对这些数组(例如x[0, :]
)进行一些切片并丢弃其余数据。有时,这些切片比原始数组小得多,计算成本很高(即np.mgrid[0:512, 0:512, 0:512]
)。numpy 是否提供[coord[view] for coord in np.mgrid[0:512, 0:512, 0:512]
不生成大型中间数组的等价物?
我意识到该解决方案对于 slice 来说是微不足道的[0,:]
,但我正在寻找一种通用解决方案来处理索引 numpy 数组的任何有效方法
编辑
有些人要求提供具体的例子来说明view
可能的样子。理想情况下,我希望有一个通用的解决方案来处理索引 ndarray 的任何有效方法。以下是上述 3x2 数组的一些具体示例:
1)view = (1, slice(None, None, 2))
2)view = (np.array([0,1]), np.array([0, 1]))
3)view = np.array([[False, False], [False, True], [False, False]])
我正在寻找类似的功能
def mgrid_with_view(array_shape, view)
...
这相当于[o[view] for o in np.indices(array_shape)]
没有不必要的计算或内存。