如何手动修改NumPy数组?解决副本修改影响原数组的问题
NumPy数组赋值后相互影响的解决方法
你的代码:
import numpy as np arr = np.array([1,2,3,4,5]) arrc=arr arrc[arr<3]=3
运行结果:
>>> arrc output : array([3,3,3,4,5]) >>> arr output : array([3,3,3,4,5])
问题根源在于arrc=arr只是让arrc指向了arr对应的内存地址,两者是同一个数组对象的引用,并非独立的数组。因此修改其中一个变量,另一个也会同步变化。
解决方法如下:
使用数组的
copy()方法创建独立副本:import numpy as np arr = np.array([1,2,3,4,5]) arrc = arr.copy() # 生成完全独立的新数组 arrc[arr<3] = 3此时修改
arrc不会对arr产生任何影响。使用切片操作创建拷贝(适用于一维数组):
arrc = arr[:]切片操作会生成原数组的新视图,一维场景下等同于创建独立拷贝,同样能避免引用关联问题。
使用
np.copy()函数:arrc = np.copy(arr)效果和数组的
copy()方法一致,都是生成原数组的独立副本。
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

