gpt4 book ai didi

python - Numpy 赋值给 slice,什么时候复制数组

转载 作者:太空狗 更新时间:2023-10-30 03:00:27 30 4
gpt4 key购买 nike

因此,使用 numpy 数组将一个数组分配给另一个数组只是复制引用:即

import numpy as np
x = np.array([5,8])
y = x
y += 1
x
Out: array([6, 9])

如果我想要深拷贝,那么我应该使用x.copy()。从更高维数组中取出 View 时也是如此,例如

A=np.array([[4,10],[8,1]])
b=A[:,1]
b+=1
A
Out: array([[ 4, 11],
[ 8, 2]])

反过来(从上面继续):

A[:,1]=b
b
Out: array([11, 2])
b+=1
A
Out: array([[ 4, 12],
[ 8, 3]])

所以到目前为止,一切都在一致地工作。但现在如果我继续做:

A[:,0] = b
A
Out: array([[12, 12],
[ 3, 3]])
b
Out: array([12, 3])
b+=1
A
Out: array([[12, 13],
[ 3, 4]])

我不明白的是为什么第一列保持不变而另一列却没有?为什么第二列继续指向b数组?是否有任何规则可以决定何时在赋值时对数组进行深度复制?

最佳答案

当你在做的时候

b=A[:,1]

它正在创建对底层数组的引用。但在这种情况下

A[:,0] = b

仅复制值。因此,在最后一条语句中,第一列保持不变,而 b 仍引用的第二列发生变化。 Take a look at this

关于python - Numpy 赋值给 slice,什么时候复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244299/

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