gpt4 book ai didi

python - 使用较低暗淡的索引数组索引 numpy 数组会产生比两者都更高暗淡的数组

转载 作者:太空狗 更新时间:2023-10-29 21:02:05 25 4
gpt4 key购买 nike

a = np.zeros((5,4,3))
v = np.ones((5, 4), dtype=int)
data = a[v]
shp = data.shape

此代码给出 shp==(5,4,4,3)

我不明白为什么。怎么才能输出更大的数组呢?对我来说毫无意义,希望得到解释。

最佳答案

这被称为 advanced indexing .高级索引允许您根据 N 维索引选择输入数组中的任意元素。

让我们用另一个例子来更清楚地说明:

a = np.random.randint(1, 5, (5,4,3))
v = np.ones((5, 4), dtype=int)

假设在这种情况下 a 是:

array([[[2, 1, 1],
[3, 4, 4],
[4, 3, 2],
[2, 2, 2]],

[[4, 4, 1],
[3, 3, 4],
[3, 4, 2],
[1, 3, 1]],

[[3, 1, 3],
[4, 3, 1],
[2, 1, 4],
[1, 2, 2]],
...

通过使用 np.ones 数组进行索引:

print(v)

array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])

您只需沿第一个轴将 a 索引为 1 的次数与 v 的次数相同。换句话说,当你这样做时:

a[1]

[[4, 4, 1],
[3, 3, 4],
[3, 4, 2],
[1, 3, 1]]

您正在沿第一个轴进行索引,因为没有指定沿其他轴的索引。这与执行 a[1, ...] 相同,即沿剩余轴截取完整切片。因此,通过使用由 1 组成的 2D 数组进行索引,您会将上述 2D 数组 (5, 4) 次堆叠在一起,从而得到形状为 (5, 4, 4, 3) 的 ndarray。或者换句话说,a[1],形状为 (4,3),堆叠 5*4=20 次。

因此,在这种情况下,您将得到:

array([[[[4, 4, 1],
[3, 3, 4],
[3, 4, 2],
[1, 3, 1]],

[[4, 4, 1],
[3, 3, 4],
[3, 4, 2],
[1, 3, 1]],
...

关于python - 使用较低暗淡的索引数组索引 numpy 数组会产生比两者都更高暗淡的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56947819/

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