Обратите внимание, что слово DIMENSION может иметь разный смысл в разных контекстах. Например, в линейной алгебре (1, 1) - это вектор в 2D-пространстве, а (1, 1, 1) - это вектор в 3D-пространстве, и оба они являются одномерными массивами в языках программирования. Коллекция трехмерных векторов - это матрица в линейной алгебре и двумерный массив в языках программирования.
В терминах формы линейной алгебры (10,) это 1 10-мерный вектор или 10 скалярных значений. Форма (10,2) - это 2 10-мерных вектора или 10 2-мерных векторов.
Рассмотрим формулу умножения матрицы линейной алгебры:
AB(i,j) = sum(A[i,k] * B[k,j])
Эта формула остается в силе для векторов, если мы Предположим, что вектор строки - это матрица измерения (1, N), а вектор столбца - это матрица измерения (N, 1).
NumPy использует тот же подход. Но NumPy допускает не только 2D-массивы, но и 1D, 3D и так далее. Такие массивы полезны для других вычислительных моделей. Если вы заинтересованы в этом, вы можете прочитать больше о тензорах.
Вы можете переставить элементы ndarray
методом .reshape(...)
. При изменении формы массива все элементы остаются на месте, но адресация элементов изменяется.
Если мы предположим, что вектор строки и вектор столбца являются специальными объектами, мы будем вынуждены усложнить вычисление правила, что очень непрактично.