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

Numpy数组形状转换报错:1维数组被使用2维索引访问

问题分析与解决

你的错误根源在于数组索引使用完全错误:

  • 原代码data[0, [0,2]]只取了第0行的第0、2列,得到的是1维数组(形状为(2,)),完全不符合你需要的(100,2)和(100,1)的数组形状
  • 后续用这个1维数组执行x_class0[:, 0]这类2维索引操作,自然会触发"数组是1维但使用了2个索引维度"的错误

正确的拆分代码

直接修正X_train和y_train的索引逻辑:

# X_train取所有行的前两列(对应Exam1、Exam2),形状为(100,2)
X_train = data[:, [0, 1]]
# y_train取所有行的第2列(对应Admission Decision),保持(100,1)的二维形状
y_train = data[:, [2]]

如果不需要严格的二维形状,也可以写成y_train = data[:, 2](此时是1维数组(100,)),后续布尔索引依然能正常工作,Numpy的广播机制会自动匹配维度。

验证与后续可视化

修改后可以先打印形状确认结果:

print("X_train shape:", X_train.shape)  # 输出 (100, 2)
print("y_train shape:", y_train.shape)  # 输出 (100, 1)

之后的可视化代码无需修改即可正常运行:

x_class0 = X_train[y_train == 0]
x_class1 = X_train[y_train == 1]

plt.scatter(x_class0[:, 0], x_class0[:, 1], color='blue', label='Not Admitted')
plt.scatter(x_class1[:, 0], x_class1[:, 1], color='red', label='Admitted')
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:42:41