亲宝软件园·资讯

展开

numpy 数组拷贝地址所引起的同步替换问题

易烊千蝈 人气:0

问题出现原因

python里numpy默认的是浅拷贝,即拷贝的是对象内存地址,导致两个数据结构共用一个内存地址。结果是修改拷贝的值的时候原对象也会随之改变,如代码所示:

a = np.arange(3)
print(a)

b = a
print(b)

b[0] = 10
print(b)

print(a)

输出的结果为:

[0 1 2]
[0 1 2]
[10   1   2]
[10   1   2]

解决方案

其实numpy给我们准备了解决方法,使用copy方法即可:

narray.copy()

还以上面的数据为例进行展示:

a = np.arange(3)
print(a)

b = a.copy()
print(b)

b[0] = 10
print(b)

print(a)

输出的结果为:

[0 1 2]
[0 1 2]
[10   1   2]
[0 1   2]

达到了只修改一个数据结构的要求!

加载全部内容

相关教程
猜你喜欢
用户评论