python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > numpy 数组拷贝同步替换

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

作者:易烊千蝈

本文主要介绍了numpy 数组拷贝地址所引起的同步替换问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题出现原因

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]

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

到此这篇关于numpy 数组拷贝地址所引起的同步替换问题的文章就介绍到这了,更多相关numpy 数组拷贝同步替换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文