numpy 数组拷贝地址所引起的同步替换问题
目录
- 问题出现原因
- 解决方案
问题出现原因
python里numpy默认的是浅拷贝,即拷贝的是对象内存地址,导致两个数据结构共用一个内存地址。结果是修改拷贝的值的时候原对象也会随之改变,如代码所示:
a = np.arange(3) print(a) b = a print(b) b[0] = 10 print(bphp) print(a)
输出的开发者_开发教程结果为:
[0 1 2]
[0 1 2][10 1http://www.devze.com 2][10 1 2]
解决方案
其实numpy给我们准备了http://www.devze.com解决方法,使用copy方法即可:
narray.copy()
还以上面的数据为例进行展示:
a = np.arange(3) print(a) b = a.androidcopy() print(b) b[0] = 10 print(b) print(a)
输出的结果为:
[0 1 2]
[0 1 2][10 1 2][0 1  编程客栈; 2]
达到了只修改一个数据结构的要求!
到此这篇关于numpy 数组拷贝地址所引起的同步替换问题的文章就介绍到这了,更多相关numpy 数组拷贝同步替换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
精彩评论