gpt4 book ai didi

python - 以数组为索引的 Numpy 切片

转载 作者:行者123 更新时间:2023-11-30 23:39:46 26 4
gpt4 key购买 nike

我正在尝试将完整的索引集提取到一个 N 维立方体中,似乎 np.mgrid 正是我所需要的。例如,np.mgrid[0:4,0:4] 生成一个 4 x 4 矩阵,其中包含相同形状数组中的所有索引。

问题是我想根据另一个数组的形状在任意数量的维度上执行此操作。 IE。如果我有一个任意维度的数组 a ,我想做类似 idx = np.mgrid[0:a.shape] 的操作,但不允许使用该语法。

是否可以构造 np.mgrid 工作所需的切片?或者还有其他一些优雅的方法可以做到这一点吗?以下表达式可以满足我的需要,但它相当复杂并且可能不是很有效:

np.reshape(np.array(list(np.ndindex(a.shape))),list(a.shape)+[len(a.shape)])

最佳答案

我通常使用np.indices :

>>> a = np.arange(2*3).reshape(2,3)
>>> np.mgrid[:2, :3]
array([[[0, 0, 0],
[1, 1, 1]],

[[0, 1, 2],
[0, 1, 2]]])
>>> np.indices(a.shape)
array([[[0, 0, 0],
[1, 1, 1]],

[[0, 1, 2],
[0, 1, 2]]])
>>> a = np.arange(2*3*5).reshape(2,3,5)
>>> (np.mgrid[:2, :3, :5] == np.indices(a.shape)).all()
True

关于python - 以数组为索引的 Numpy 切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273187/

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