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

numpy中两种切片修改值后原数组变化差异的原因咨询

核心原因:NumPy 两种索引模式的视图/副本差异

这个差异本质是NumPy对不同索引方式的内存处理规则不同:

  • 数组A来自基础切片索引,是原数组X的视图:
    用:形式的范围切片属于基础切片范畴,这种索引不会分配新的内存,生成的数组只是共享原数组的内存空间,相当于给原数组的部分区域开了一个新的访问入口。你修改视图的元素,本质就是修改原数组对应内存地址的值,因此A[1,1] = 99会同步改动X的对应位置。
  • 数组B来自高级索引(花式索引),是原数组X的副本:
    只要索引参数传入了自定义的整数数组、布尔数组,就属于高级索引范畴,这种索引会开辟独立的新内存空间,把选中的元素值复制一份生成新数组,和原数组完全没有内存关联。你修改副本的元素不会影响原数组,因此B[1,1] = 100不会改动X的内容。

你可以通过base属性验证两者的区别:打印A.base会输出原数组X,而B.base返回None,说明B是拥有独立内存的新数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:15:02