列表正确访问元素部分的列表

时间:2018-05-17 23:41:21

标签: python python-3.x numpy

我正在尝试访问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]

他们都没有工作。

如何正确访问部分元素?

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]尝试再次选择行;它不会从列中进行选择。要做到这一点,请使用我的表达方式。