本文作者:云初冀北

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

numpy 数组拷贝地址所引起的同步替换问题摘要: 问题出现原因python里numpy默认的是浅拷贝,即拷贝的是对象内存地址,导致两个数据结构共用一个内存地址。结果是修改拷贝的值的时候原对象也会随之改变,如代码所示:a = np....

?=问题出现原因

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

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

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,53人围观)参与讨论

还没有评论,来说两句吧...