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

Python中拷贝数组修改后影响原数组的问题求助

解决Numpy切片修改影响原数组的问题

这绝对是Numpy新手最容易踩的坑之一!我来给你拆解下原因和解决办法:

为啥修改切片会影响原数组?

Numpy里的数组切片(比如array[4:6])默认返回的是原数组的「视图(View)」,而不是独立的拷贝。视图本质上和原数组共享同一块内存空间,这样设计是为了处理大数据时更高效——避免无意义的内存复制拖慢速度。所以你修改视图里的元素,原数组自然会跟着改变。

咱们看你这段代码里的关键问题:

import numpy as np
array = np.array([1,5,6,7,8,94])
arr_temp = array[4:6]  # 这里arr_temp是原数组的视图,不是独立拷贝!
arr_temp[1] = 100
print(array)  # 输出array([ 1,  5,  6,  7,  8, 100]),原数组被修改

怎么让切片成为独立的拷贝?

只需要显式调用.copy()方法(或者np.copy()函数),就能得到一个和原数组数据不共享的独立数组:

方法1:用数组的.copy()方法

import numpy as np
array = np.array([1,5,6,7,8,94])
arr_temp = array[4:6].copy()  # 显式创建拷贝
arr_temp[1] = 100
print(array)  # 输出array([ 1,  5,  6,  7,  8, 94]),符合你的预期

方法2:用np.copy()函数

arr_temp = np.copy(array[4:6])

额外小提示

如果你用的是布尔索引或者整数索引(比如array[[1,3]]),Numpy默认会返回拷贝而非视图,但切片操作始终返回视图,这点要记牢哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:00:57