如何访问二维阵列的元素?

2024-05-12 22:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想了解如何操作2D数组的元素

例如,如果我有:

a= ( a11 a12 a13 )  and b = (b11 b12 b13) 
     a21 a22 a23             b21 b22 b23

我在python中定义了它们,例如:

a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]

我看到我不能引用a[1][1],而是引用a[1],这给了我一个[2,1]的结果。 所以,我不明白如何访问这些数组的第二行?那就是a21, a22, a23, b21, b22, b23? 我该怎么做才能把它们乘以c1 = a21*b21, c2 = a22*b22等等


Tags: and元素数组b12a13a21b11b13
3条回答

如果你有

a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]

然后

a[1][1]

会很好的。它指向第二列,第二行,就像你想要的那样

我不确定你做错了什么

要将第三列中的单元格相乘,只需执行以下操作

c = [a[2][i] * b[2][i] for i in range(len(a[2]))] 

这将适用于任意数量的行

编辑:第一个数字是列,第二个数字是行,使用当前布局。它们都从零开始编号。如果你想改变顺序,你可以这样做

a = zip(*a)

或者您也可以这样创建:

a=[[1, 2, 3], [1, 1, 1]]

仔细看看你的数组有多少个括号。我遇到一个例子,当函数返回带有额外括号的答案时,如下所示:

>>>approx
array([[[1192,  391]],
       [[1191,  409]],
       [[1209,  438]],
       [[1191,  409]]])

但这不起作用

>>> approx[1,1]
IndexError: index 1 is out of bounds for axis 1 with size 1

这可能会打开括号:

>>> approx[:,0]
array([[1192,  391],
       [1191,  409],
       [1209,  438],
       [1191,  409]])

现在可以使用普通的元素访问表示法:

>>> approx[:,0][1,1]
409

如果要使用二维数组进行多次计算,则应使用NumPy数组而不是嵌套列表

对于您的问题,您可以使用:zip(*a)将其转置为:

In [55]: a=[[1,1],[2,1],[3,1]]
In [56]: zip(*a)
Out[56]: [(1, 2, 3), (1, 1, 1)]
In [57]: zip(*a)[0]
Out[57]: (1, 2, 3)

相关问题 更多 >