【发布时间】:2021-05-27 11:16:53
【问题描述】:
我正在学习numpy,并对数组索引中使用的语法感到困惑。例如:
arr[2, 3]
这意味着元素在第 3 行和第 4 列的交叉点。是什么让我在方括号内用逗号分隔不同索引感到困惑(如在函数参数中)。使用 python 列表这样做是无效的:
l = [[1, 2], [3, 4]]
l[1, 1]
Traceback(最近一次调用最后一次): 文件“”,第 1 行,在 TypeError:列表索引必须是整数或切片,而不是元组
那么,如果这不是一个有效的 python 语法,numpy 数组是如何工作的?
【问题讨论】:
-
问题是
l是一个列表,而不是一个numpy数组 -
arr[2,3]将元组(2,3)传递给arr.__getitem__方法。对于数组,该方法可以处理元组。列表索引方法不能,并且会引发TypeError(不是 SyntaxError)。不同的类有不同的索引方法。此外,创建元组的是逗号。