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

Numpy高级索引:n维数组索引n维数组的结果差异问题

Numpy高级索引逻辑差异说明

第一段代码的运行原理

当你仅传入单个二维数组作为索引时,属于单轴整数数组索引:

  • 你定义的a是形状为(5,5)的二维数组,仅传入index作为索引时,该索引默认作用于a的第0轴(行维度),第1轴(列维度)默认选中全部元素。
  • 你的index形状为(2,5),取值为[[0,1,2,3,4], [0,1,2,3,4]],相当于按索引值选中a的第0、1、2、3、4行,再重复选中一次这5行,最终选中的结果形状为(2,5,5)。
  • 对选中的结果赋值1.0时,所有被选中的行的全部列都会被覆盖为1.0,因为原数组的5行都被选中过,所以最终整个数组的元素全为1.0。

第二段代码的运行原理

当你传入两个一维数组作为索引时,属于多轴整数数组索引:

  • 逗号分隔的两个index分别对应a的第0轴、第1轴的索引,Numpy会将两个索引数组对应位置的元素逐对匹配,选中(0,0)、(1,1)、(2,2)、(3,3)、(4,4)这5个对角线位置的元素。
  • 赋值操作仅作用于这5个匹配到的位置,因此只有对角线元素被修改为1.0。

拓展补充

如果想要用二维形状的索引数组实现多轴配对索引,只需要拆分索引数组的对应维度即可,比如对你的第一段代码的index做如下修改就能达到对角线赋值的效果:

a[index[0], index[1]] = 1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:21:03