numpy.ma.copy#

ma.copy(self, *args, **params) a.copy(order='C')[источник]#
ma.copy(порядок='C') None

Возвращает копию массива.

Параметры:
порядок{‘C’, ‘F’, ‘A’, ‘K’}, опционально

Управляет расположением в памяти копии. 'C' означает порядок C, 'F' означает порядок F, 'A' означает 'F', если a является Fortran смежным, 'C' в противном случае. 'K' означает соответствие макету a как можно ближе. (Обратите внимание, что эта функция и numpy.copy очень похожи, но имеют разные значения по умолчанию для своих аргументов order= , и эта функция всегда пропускает подклассы.)

Смотрите также

numpy.copy

Похожая функция с другим поведением по умолчанию

numpy.copyto

Примечания

Эта функция является предпочтительным методом создания копии массива. Функция numpy.copy похож, но по умолчанию использует порядок 'K', и не будет передавать подклассы по умолчанию.

Примеры

>>> import numpy as np
>>> x = np.array([[1,2,3],[4,5,6]], order='F')
>>> y = x.copy()
>>> x.fill(0)
>>> x
array([[0, 0, 0],
       [0, 0, 0]])
>>> y
array([[1, 2, 3],
       [4, 5, 6]])
>>> y.flags['C_CONTIGUOUS']
True

Для массивов, содержащих объекты Python (например, dtype=object), копия является поверхностной. Новый массив будет содержать тот же объект, что может привести к неожиданностям, если этот объект можно изменить (является изменяемым):

>>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
>>> b = a.copy()
>>> b[2][0] = 10
>>> a
array([1, 'm', list([10, 3, 4])], dtype=object)

Чтобы гарантировать, что все элементы в object массива копируются, используйте copy.deepcopy:

>>> import copy
>>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
>>> c = copy.deepcopy(a)
>>> c[2][0] = 10
>>> c
array([1, 'm', list([10, 3, 4])], dtype=object)
>>> a
array([1, 'm', list([2, 3, 4])], dtype=object)