我正在尝试访问python 3中的列表列表。
a = [
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
我需要访问最右边一列中的第二个和第三个元素。
我想得到:
[6, 9]
作为列表
但是,
from numpy import matrix
from numpy import array
a = [
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
ab = matrix(a)
ab[1:3][2]
ab = array(a)
ab[1:3][2]
他们都没有工作。
如何正确访问部分元素?
答案 0 :(得分:3)
从second
行开始first
列:
In [27]: x = np.arange(1, 10).reshape(3,3)
# array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
In [31]: x[1:,2]
Out[31]: array([6, 9])
答案 1 :(得分:0)
简单列表理解任务:
In [507]: a = [
...: [ 1, 2, 3 ],
...: [ 4, 5, 6 ],
...: [ 7, 8, 9 ]
...: ]
...:
In [508]: [x[2] for x in a[1:]]
Out[508]: [6, 9]
列表也有一手牌'转置'成语:
In [509]: list(zip(*a))
Out[509]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
In [510]: list(zip(*a))[2][1:]
Out[510]: (6, 9)
如果你把它变成一个数组
In [511]: np.array(a)
Out[511]:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
In [512]: np.array(a)[1:,2]
Out[512]: array([6, 9])
请注意,我使用[1:, 2]
索引了数组。如果我尝试零碎地做:
In [513]: np.array(a)[1:3]
Out[513]:
array([[4, 5, 6],
[7, 8, 9]]) # still a 2d array
In [514]: _[2]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-514-084060d1880a> in <module>()
----> 1 _[2]
IndexError: index 2 is out of bounds for axis 0 with size 2
[1:3]
选择正确的行,但下一个`[2]尝试再次选择行;它不会从列中进行选择。要做到这一点,请使用我的表达方式。