Размышления о форме NumPy массивов в виде строк и столбцов быстро разочаруют вас, если вы начнете работать с более сложными данными.
NumPy массивы на самом деле являются многомерными тензоры . Тензор может иметь любое количество измерений. Векторы и матрицы на самом деле являются не чем иным, как 1-мерным и 2-мерным тензорами соответственно.
Форма массива возвращает размер каждого измерения тензора. Давайте начнем с простого вектора:
x = np.array([1, 2, 3])
Вызов .shape
для этой переменной вернет (3,)
, поскольку массив является 1-D тензором с 3 элементами в первом измерении. Запятая - это просто Python соглашение о том, что скобки представляют Python кортеж.
Теперь давайте попробуем матрицу:
m = np.array([
[1, 2, 3],
[4, 5, 6]
])
Запуск m.shape
теперь приводит к (2, 3)
, поскольку первое измерение тензора содержит 2 векторов, а второе измерение (сами векторы) содержит 3 элементов.
Наконец, давайте попробуем Трехмерный тензор:
t = np.array([
[
[1, 2, 3],
[4, 5, 6]
],
[
[7, 8, 9],
[0, 1, 2]
]
])
t.shape
вернет (2, 2, 3)
, что означает, что первое измерение массива содержит два элемента (в данном случае две матрицы), второе измерение (матрицы самих) содержит два вектора каждый, а третье измерение (векторы) содержит три элемента.