如何访问2D数组中的元素?

时间:2011-08-11 07:20:17

标签: python arrays

我是python的新手,我想了解一个人如何操纵数组的元素。 如果我有例如:

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等?

6 个答案:

答案 0 :(得分:13)

如果你有

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]]

答案 1 :(得分:3)

如果你想用2d数组做很多计算,你应该使用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)

答案 2 :(得分:0)

似乎在这里工作:

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

答案 3 :(得分:0)

a[1][1]按预期工作。你的意思是a11作为第一行的第一个元素吗?原因是[0] [0]。

答案 4 :(得分:0)

仔细查看阵列中有多少个括号。我遇到了一个示例,当函数返回带有额外括号的答案时,如:

>>>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

答案 5 :(得分:0)

如果您有这个:

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

您可以使用:

print(a[0][2])
a[0][1] = 7
print(a)