我是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
等?
答案 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)