gpt4 book ai didi

python - array.copy() 与 numpy.copy(array) 之间的区别

转载 作者:行者123 更新时间:2023-11-28 22:11:11 27 4
gpt4 key购买 nike

我只是在看下面的 numpy 信息图。

https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Numpy_Python_Cheat_Sheet.pdf

我想知道 np.copy(a)a.copy() 之间是否有任何区别 - 或者它们只是相同操作的同义词?

最佳答案

如果a 是一个numpy.array,结果是一样的。但是如果 a 是其他东西,a.copy() 将返回与 a 相同的类型或失败,这取决于它的类型,并且 np.copy(a) 将始终返回 numpy.array。尝试,例如以下内容:

import pandas as pd

for x in (list(range(3)), np.array(range(3)), pd.Series(range(3))):
print()
print(repr(x.copy()))
print(repr(np.copy(x)))

UPD:还有一个区别。这两种方法都有一个附加的 order 参数,用于定义具有不同默认值的副本中的内存顺序。在np.copy中是'K',意思是“使用尽可能接近原始的顺序”,在ndarray.copy中> 它是 'C'(使用 C 顺序)。例如

x = np.array([[1,2,3],[4,5,6]], order='F')
for y in [x, np.copy(x), x.copy()]:
print(y.flags['C_CONTIGUOUS'], y.flags['F_CONTIGUOUS'])

将打印

False True
False True
True False

在这两种情况下,副本都是深层的,因为数组数据本身被复制了,但在对象数组的情况下,对象本身没有被复制。可以证明

x = np.array([1, [1,2,3]])
y = x.copy()
z = np.copy(x)
y[1][1] = -2
z[1][2] = -3
print(x)
print(y)
print(z)

打印出来的三行都是

[1 list([1, -2, -3])]

关于python - array.copy() 与 numpy.copy(array) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028405/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com