Сначала вы можете получить количество измерений массива numpy
от array
до len(array.shape)
.
Массив с некоторыми размерами длины 1 не равен массиву с удаленными этими измерениямиНапример:
>>> a = np.array([[1], [2], [3]])
>>> b = np.array([1, 2, 3])
>>> a
array([[1],
[2],
[3]])
>>> b
array([1, 2, 3])
>>> a.shape
(3, 1)
>>> b.shape
(3,)
>>> a + a
array([[2],
[4],
[6]])
>>> a + b
array([[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
Концептуально разница между массивом формы (3, 1)
и массивом формы (3,)
подобна разнице между длиной [100]
и 100
.
[100]
- это list
, который имеет один элемент.У него может быть больше, но сейчас у него есть минимально возможное количество элементов .
С другой стороны, даже не имеет смысла говорить о длине 100
потому что у него нет единицы.
Аналогично, массив формы (3, 1)
имеет 3 строки и 1 столбец, а массив формы (3,)
не имеет столбцов вообще ,У него даже нет рядов, в некотором смысле; - это строка, точно так же, как 100
не имеет элементов, потому что является элементом.
Для получения дополнительной информации о поведении массивов различной формы при взаимодействии сВ других массивах вы можете видеть правила вещания .
Наконец, для полноты, чтобы перебрать строки массива numpy
, вы можете просто сделать for row in array
.Если вы хотите выполнить итерацию по задним осям, вы можете использовать np.moveaxis
, например:
>>> array = np.array([[1, 2], [3, 4], [5, 6]])
>>> for row in array:
... print(row)
...
[1 2]
[3 4]
[5 6]
>>> for col in np.moveaxis(array, [0, 1], [1, 0]):
... print(col)
...
[1 3 5]
[2 4 6]