Использование простого целого числа в качестве индекса возвращает этот столбец / строку как истинный вектор.Это похоже на индексирование списка - вы получаете элемент только с этим индексом.Содержащий размер удаляется:
>>> my_list = ['a', 'b', 'c', 'd']
>>> my_list[2]
'c'
Вместо этого вы хотите срез.Срез списка - это (под) список, а срез матрицы - это матрица.С помощью numpy вы можете указать это либо как нотацию среза, используя :
, либо как последовательность индексов:
>>> c = b[:,:1] # slice notation
>>> c.shape
(2, 1)
>>> d = b[[1],:] # sequence of indices
>>> d.shape
(1, 2)
Нотация среза предназначена для последовательных диапазонов индексов.Например, :1
означает «все от начала до 1».Обозначение последовательности предназначено для непоследовательных наборов индексов.Например, [0, 2]
пропускает индекс 1. Если вам нужен только один индекс, последовательность обозначений будет проще, если вы не имеете дело с границами (первая / последняя строка / столбец).