当前位置:主页 > python教程 > numpy 数组拷贝同步替换

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

发布:2023-03-22 08:35:01 59


给网友们整理相关的编程文章,网友石涵易根据主题投稿了本篇教程内容,涉及到numpy 数组拷贝同步替换、numpy 数组拷贝、numpy 数组拷贝同步替换相关内容,已被667网友关注,内容中涉及的知识点可以在下方直接下载获取。

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 数组拷贝同步替换内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

网友讨论