В NumPy разница между одномерным массивом (1D array) и матрицей (2D array) в числе измерений (ndim) и способе интерпретации данных.

Одномерный массив (вектор):

  • ndim = 1
  • shape = (n,) — только одна ось
  • Индексация одномерная: a[i]
  • Элементы располагаются в последовательной линии памяти
  • Арифметические операции выполняются поэлементно, broadcasting работает с другими массивами по правилам совместимости форм

Пример:

import numpy as np
v = np.array([1, 2, 3])
v.shape   # (3,)
v.ndim    # 1

Матрица:

  • ndim = 2
  • shape = (m, n) — две оси (строки и столбцы)
  • Индексация двумерная: M[i, j]
  • Позволяет выполнять операции по строкам, по столбцам, применять линейную алгебру
  • Broadcasting отличается от 1D: вектор можно вычесть из строк или столбцов с помощью согласования формы

Пример:

M = np.array([[1, 2, 3],
              [4, 5, 6]])
M.shape   # (2, 3)
M.ndim    # 2

Ключевые различия:

  1. v.shape = (n,) vs M.shape = (m, n)
  2. Одномерный массив не различает строки и столбцы, матрица — чётко различает
  3. Для линейной алгебры (умножение, транспонирование) удобно использовать 2D массивы
  4. Broadcasting зависит от числа измерений: (3,) может вычитаться из (2,3) построчно, но не напрямую из (3,2) без reshape