gpt4 book ai didi

python - 生成包含另一个 NumPy 数组索引的 NumPy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:42 24 4
gpt4 key购买 nike

我想为另一个 NumPy 数组的给定形状生成一个 np.ndarray NumPy 数组。前一个数组应包含后一个数组的每个单元格的相应索引。

示例 1

假设我们有 a = np.ones((3,)),其形状为 (3,)。我预计

[[0]
[1]
[2]]

因为a中有a[0]a[1]a[2]可以通过索引 012 访问它们。

示例 2

对于像 b = np.ones((3, 2)) 这样的 (3, 2) 形状,已经有很多东西要写了。我预计

[[[0 0]
[0 1]]

[[1 0]
[1 1]]

[[2 0]
[2 1]]]

因为b中有6个单元格,可以通过相应的索引b[0][0]b[0][1]访问 表示第一行,b[1][0]b[1][1] 表示第二行,b[2] [0]b[2][1] 为第三行。因此我们得到 [0 0], [0 1], [1 0], [1 1][2 0][2 1] 位于生成数组中的匹配位置。

非常感谢您抽出时间。如果我能以任何方式澄清这个问题,请告诉我。

最佳答案

使用 np.indicesnp.stack 实现此目的的一种方法:

np.stack(np.indices((3,)), -1)

#array([[0],
# [1],
# [2]])

np.stack(np.indices((3,2)), -1)

#array([[[0, 0],
# [0, 1]],
# [[1, 0],
# [1, 1]],
# [[2, 0],
# [2, 1]]])

np.indices 返回一个索引网格数组,其中每个子数组代表一个轴:

np.indices((3, 2))

#array([[[0, 0],
# [1, 1],
# [2, 2]],
# [[0, 1],
# [0, 1],
# [0, 1]]])

然后使用np.stack转置数组,为来自不同轴的每个元素堆叠索引:

np.stack(np.indices((3,2)), -1)

#array([[[0, 0],
# [0, 1]],
# [[1, 0],
# [1, 1]],
# [[2, 0],
# [2, 1]]])

关于python - 生成包含另一个 NumPy 数组索引的 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142160/

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