gpt4 book ai didi

python - 使用一维数组的 Numpy 高级索引

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:40 25 4
gpt4 key购买 nike

给定一个一维数组

x = np.array([0,1,2,3,4,5,6,7,8,9])

我想同时索引多个元素。例如代替

x[1]
x[2]

我要用

x[(1,2)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: too many indices for array

它适用于 1 个二维数组,例如

x = np.array([[1,2,3,4],[5,6,7,8],[7,6,8,9]])
>>> x
array([[1, 2, 3, 4],
[5, 6, 7, 8],
[7, 6, 8, 9]])
>>> x[(1,2),(1,3)]
array([6, 9])
>>> x[(1,2),:]
array([[5, 6, 7, 8],
[7, 6, 8, 9]])

如您所见,对于 nd 数组,它工作正常!有什么方法可以对一维数组进行这种索引?

最佳答案

您需要将索引包装在列表中,而不是元组中:x[[1,2]]。这会触发 advanced indexing NumPy 返回一个新数组,其中包含您所写索引处的值。


只要有可能,NumPy 就会隐含地假设元组 的每个元素索引数组的不同维度。您的数组有 1 个维度,而不是 2 个维度,因此 x[(1,2)] 会引发错误。

x[(1,2), :] 对二维数组成功的原因是您明确告诉 NumPy 该数组(至少)有两个维度并说出了您想要的内容从前两个轴。索引被解析为 2 元组 ((1,2), :) 因此 (1,2) 改为用于沿第一个轴的高级索引。如果您只是使用 x[(1,2)]x[1,2],您将在第 1 行第 2 列获得一个元素。

对于 NumPy 来说,解析索引非常复杂,因为(与 Python 不同)可以使用多种不同的索引方法。更复杂的是,可以在不同的轴上使用不同的方法!您可以在 NumPy 的 mapping.c 中研究确切的实现。文件。

关于python - 使用一维数组的 Numpy 高级索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386413/

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