You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何复制NumPy数组并在副本中修改?赋值后修改未生效问题

问题原因与解决方法
  • 问题根源:
    NumPy里直接用x2 = x这种赋值操作,并不是创建新数组,只是给原数组对象新增了一个引用。也就是说x、x2、x3其实指向的是同一块内存里的数组。你修改x2的时候,原x已经被同步修改;后面修改x3时,又在已经被x2改动过的数组上操作,最后所有变量指向的都是这个被反复修改后的数组,自然看起来x2、x3和x完全相同。

  • 解决办法:
    要给x创建独立的副本,使用数组的.copy()方法或者np.copy()函数即可:

    import numpy as np
    x = np.random.randint(10, size=100)
    x2 = x.copy()  # 创建原数组的独立副本
    x3 = x.copy()  # 创建原数组的独立副本
    
    for i in range(1,x.shape[0]-1):
        x2[i] = (x[i-1]+x[i+1])/2  # 修改的是x2副本,不会影响原x
    
    for i in range(3,x.shape[0]-3):
        x3[i] = (x[i-2]+x[i-1]+x[i+1] + x[i+2])/4  # 修改的是x3副本,基于原x计算
    

    这样x2和x3就是完全独立于原x的新数组,修改它们既不会影响原x,也不会互相干扰。

内容的提问来源于stack exchange,提问作者AkashSngh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:20:37