numpy.recarray.copy#
方法
- recarray.copy(order='C')#
返回数组的副本.
- 参数:
- order{‘C’, ‘F’, ‘A’, ‘K’}, 可选
控制副本的内存布局.’C’ 表示 C 顺序,’F’ 表示 F 顺序,’A’ 表示如果 a 是 Fortran 连续的则为 ‘F’,否则为 ‘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)