gpt4 book ai didi

python - 索引到 numpy mgrid

转载 作者:太空狗 更新时间:2023-10-30 01:34:57 28 4
gpt4 key购买 nike

我使用 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] 不生成大型中间数组的等效项?

我意识到解决方案对于切片 [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)] 而无需不必要的计算或内存。

最佳答案

正如 HYRY 所提到的,我相信您要避免的是创建完整数组。 mgrid 创建一个完整的数组,但是如果您使用:

x, y = np.broadcast_arrays(*np.ogrid[0:2,0:3])

xynp.arange(0,2) (和 np.arange( 0,3)),同时表现得好像每个都是一个完整的数组。如果您需要一个大的结果数组,您可能应该将这些数组单独切片,然后将它们连接起来。 (np.broadcast_arrays 返回数组的元组而不是数组)

关于python - 索引到 numpy mgrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031128/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com