Простая задача понимания списка:
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] пытается выбрать строки снова;он не выбирает из столбцов.Для этого используйте мои выражения.