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.