Нашли ошибку?
базовыйNumPy 2.5.3

Создание массивов

Все основные способы получить массив — из списка, заполненный значением, диапазон чисел, единичная матрица.

Нужно знать:Что такое NumPy

Содержание статьи

Коротко

  • Из данных: np.array(список); np.asarray(x) не копирует, если x уже массив.
  • Заполненные: zeros, ones, full(shape, значение), empty (не заполняет — там мусор).
  • Форма передаётся кортежем: np.zeros((2, 3)).
  • Диапазоны: arange(start, stop, step) — как range, stop не входит; linspace(start, stop, num) — ровно num точек, конец входит.
  • *_like(a) создаёт массив той же формы и типа, что a.

Синтаксис

np.array(obj, dtype=None)
np.zeros(shape, dtype=float)       # так же ones, empty
np.full(shape, fill_value, dtype=None)
np.arange(start=0, stop, step=1)
np.linspace(start, stop, num=50, endpoint=True)
np.eye(N, M=None, k=0)             # единицы на диагонали
np.zeros_like(a)                   # так же ones_like, full_like, empty_like

Параметры

ПараметрЧто делаетПо умолчанию
shapeформа: число для одномерного массива или кортеж (строки, столбцы, …)обязательный
dtypeтип элементов: float, int, bool, "float32"…; None — определить по даннымfloat или None
fill_valueчем заполнить массив в full / full_likeобязательный
stepшаг arange; может быть дробным, но см. подводные камни1
numсколько точек вернёт linspace50
endpointвключать ли stop в linspaceTrue
kсдвиг диагонали в eye: 1 — над главной, -1 — под ней0

Примеры

Из вложенного списка
np.array([[1, 2, 3],
          [4, 5, 6]], dtype=float)
Вывод
array([[1., 2., 3.],
       [4., 5., 6.]])
Заполненные массивы
print(np.zeros(3))
print(np.ones((2, 3), dtype=int))
np.full((2, 2), 7)
Вывод
[0. 0. 0.]
[[1 1 1]
 [1 1 1]]
array([[7, 7],
       [7, 7]])
arange — как range
print(np.arange(5))
print(np.arange(2, 10, 3))       # stop не входит
np.arange(0, 1, 0.25)
Вывод
[0 1 2 3 4]
[2 5 8]
array([0.  , 0.25, 0.5 , 0.75])
linspace — заданное число точек
print(np.linspace(0, 1, 5))                   # 5 точек, конец входит
np.linspace(0, 1, 5, endpoint=False)
Вывод
[0.   0.25 0.5  0.75 1.  ]
array([0. , 0.2, 0.4, 0.6, 0.8])
Единичная матрица
np.eye(3, dtype=int)
Вывод
array([[1, 0, 0],
       [0, 1, 0],
       [0, 0, 1]])
Такой же формы, как другой массив
temps = np.array([[12.5, 14.0], [9.0, 11.5]])
print(np.zeros_like(temps))
np.full_like(temps, np.nan)
Вывод
[[0. 0.]
 [0. 0.]]
array([[nan, nan],
       [nan, nan]])

Подводные камни

arange с дробным шагом

Из-за погрешности float последняя точка может попасть в диапазон, хотя stop не должен входить. Для дробных сеток используйте linspace — там число точек задано явно.

Лишний элемент
np.arange(1, 1.3, 0.1)           # ожидали 3 числа, а получили 4
Вывод
array([1. , 1.1, 1.2, 1.3])

Форма без скобок

np.zeros(2, 3) читается как «2 элемента типа 3». Форму двумерного массива передавайте кортежем: np.zeros((2, 3)).

Размеры вторым аргументомошибка: TypeError
np.zeros(2, 3)                   # второй аргумент — это dtype
Ошибка
TypeError: Cannot interpret '3' as a data type

empty не значит «нули»

np.empty только выделяет память и не заполняет её: в массиве может оказаться что угодно, в том числе нули — на это нельзя полагаться. Используйте его, только если сразу перезапишете все элементы.