gpt4 book ai didi

python - 对 `copy` 的 `numpy.astype` 属性感到困惑

转载 作者:行者123 更新时间:2023-11-28 21:38:59 24 4
gpt4 key购买 nike

我对 numpy.astypecopy 属性感到困惑。我查看了link中的 Material ,它说:

默认情况下,astype 总是返回一个新分配的数组。如果将其设置为 false,并且满足 dtype、order 和 subok 要求,则返回输入数组而不是副本。

这意味着会改变一个ndarray对象的原始值?喜欢:

x = np.array([1, 2, 2.5])
x.astype(int, copy=False)

但似乎 x 仍然是原始值 array([ 1. , 2. , 2.5]) 。谁能解释一下?非常感谢~~

最佳答案

他们的意思是,如果原始数组完全符合您传递的规范,即具有正确的 dtype、majorness 并且不是子类或您设置了 subok 标志,那么将避免复制。输入数组永远不会被修改。在您的示例中,数据类型不匹配,因此无论如何都会创建一个新数组。

如果您不希望数据被复制,请改用 View 。这将尽可能根据您的规范重新解释数据缓冲区。

x = np.array([1, 2, 2.5])
y = x.view(int)
y
# array([4607182418800017408, 4611686018427387904, 4612811918334230528])
# y and x share the same data buffer:
y[...] = 0
x
# array([ 0., 0., 0.])

关于python - 对 `copy` 的 `numpy.astype` 属性感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47426375/

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