numpy.copy()

Функция numpy.copy() создаёт независимую копию массива. В отличие от срезов (которые возвращают view, разделяющий память), изменения в копии не отражаются на оригинале.

Сигнатура

numpy.copy(a, order='K', subok=False)

Параметры

  • a — исходный массив (array_like).

  • order — порядок хранения: 'C', 'F', 'A', 'K'.

  • subok — сохранять ли подкласс массива.

Возвращаемое значение

ndarray — новый объект с теми же данными, что и a, но в новом блоке памяти.

Примеры

Пример 1. Изменение копии не трогает оригинал.

import numpy as np

a = np.array([1, 2, 3])
b = np.copy(a)
b[0] = 99
print(a, b)
[1 2 3] [99  2  3]

Пример 2. В отличие от среза, копия независима.

a = np.array([1, 2, 3, 4])
view = a[1:3]
view[0] = 0
print("view изменил a:", a)

a = np.array([1, 2, 3, 4])
c = np.copy(a[1:3])
c[0] = 0
print("copy не изменил a:", a)
view изменил a: [1 0 3 4]
copy не изменил a: [1 2 3 4]

Пример 3. Метод ``ndarray.copy()`` — эквивалент.

a = np.array([10, 20, 30])
b = a.copy()
print(b is a, np.array_equal(a, b))
False True

Пример 4. Сохранение исходного снимка датчика перед фильтрацией.

raw = np.array([512, 530, 540, 525])
backup = np.copy(raw)
raw[:] = raw - raw.mean()  # модифицируем raw
print("raw:", raw)
print("backup:", backup)
raw: [-14.75   3.25  13.25  -1.75]
backup: [512 530 540 525]

Пример 5. Копия с Fortran-порядком.

m = np.array([[1, 2], [3, 4]])
f = np.copy(m, order='F')
print(f.flags['F_CONTIGUOUS'])
True

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.