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

使用np.ix_时触发Cross index must be 1 dimensional错误的原因

错误触发原因
  • np.ix_ 对传入参数有明确要求:所有输入的索引序列必须为1维结构,用于生成可广播的多维度索引网格,适配数组的跨维度取值、赋值操作。
  • 你的代码中a经过reshape(1,2)处理后已经是shape为(1,2)的二维数组,传入np.ix_时又额外套了一层列表[a],最终传入的参数维度远高于要求的1维,因此触发ValueError: Cross index must be 1 dimensional报错。
修复方案

核心是保证传入np.ix_的参数为1维结构,如果你需要给10x10数组的行1、行2与列1、列2的交叉区域赋值2x2的k_r,可以用以下两种修改方式:

方式1:修改a的定义,直接生成1维数组

import numpy as np

# 去掉多余的reshape操作,直接生成1维的索引数组
a = np.arange(1,3)
print(a)

k_r = [[1,1],[1,-1]]

r = np.zeros((10,10),int)
# 直接传入1维的a作为np.ix_的参数,不要额外套列表
r[np.ix_(a,a)] = k_r

print(r)

方式2:不修改原有a的定义,传参时展平数组

如果你的业务逻辑需要保留a为(1,2)的二维结构,可以在传参时用ravel()/flatten()将a展平为1维:

import numpy as np

a = np.arange(1,3).reshape(1,2)
print(a)

k_r = [[1,1],[1,-1]]

r = np.zeros((10,10),int)
# 展平a为1维后传入np.ix_
r[np.ix_(a.ravel(),a.ravel())] = k_r

print(r)

修改后两个传入np.ix_的参数都是长度为2的1维数组,生成的2x2索引网格刚好匹配k_r的形状,赋值操作可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:24:06