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

本地VS Code运行numpy代码报形状不均错误,另一台机器正常求排查

NumPy数组转换维度不兼容错误排查

错误现象

本地VS Code运行代码时触发以下错误,但在另一台电脑上可正常执行:

ultimate = np.array(ultimate)   
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (81, 2) + inhomogeneous part.

代码片段

for q in nonoutliersPos:
    ultimate.append(cluster0Data[q])
print('ultimate:',ultimate)      
ultimate = np.array(ultimate) 

ultimate列表部分数据

[(array([3.72660978e+08, 4.16826783e+00, 6.76000000e-04, 0.00000000e+00,
       0.00000000e+00]), 199), (array([3.72660954e+08, 4.16826783e+00, 6.76000000e-04, 0.00000000e+00,
       0.00000000e+00]), 201), (array([3.72660978e+08, 4.16826783e+00, 6.76000000e-04, 0.00000000e+00,
       0.00000000e+00]), 202), (array([3.72660954e+08, 4.16826783e+00, 6.76000000e-04, 0.00000000e+00,
       0.00000000e+00]), 203), (array([ 2.63184231e+08,  4.16799028e+00, -7.13000000e-05, -4.55000000e-13,
        0.00000000e+00]), 211), (array([ 2.63184237e+08,  4.16799028e+00, -7.13000000e-05, -4.55000000e-13,
        0.00000000e+00]), 212)]

本地环境依赖版本

Package         Version
--------------- ------------
contourpy       1.2.0
cycler          0.12.1
et-xmlfile      1.1.0
fonttools       4.44.3
joblib          1.3.2
kiwisolver      1.4.5
matplotlib      3.8.2
networkx        3.2.1
numpy           1.24.3
openpyxl        3.1.2
packaging       23.2
pandas          2.0.3
Pillow          10.1.0
pip             22.3.1
plotly          5.18.0
pyparsing       3.1.1
python-dateutil 2.8.2
pytz            2023.3.post1
ruptures        1.1.8
scikit-fuzzy    0.4.2
scikit-learn    1.3.2
scipy           1.11.4
setuptools      65.5.0
six             1.16.0
tenacity        8.2.3
threadpoolctl   3.2.0
tzdata          2023.3

问题原因

  1. NumPy版本差异:本地使用NumPy 1.24.3,另一台电脑大概率是更低版本(如1.21及以下)。旧版NumPy处理包含数组和标量的元组列表时,会自动生成dtype=object的数组,不会触发维度检查;而新版NumPy对数组维度一致性要求更严格,当检测到列表内元素结构无法构成规整多维数组时,就会抛出该错误。
  2. 数据结构异常:ultimate列表中可能存在部分元组结构与示例不一致——比如某个元组内的数组长度不是5,或者元组元素数量不为2,导致整体无法转换为规整数组。

解决办法

  • 统一NumPy版本:将本地NumPy降级至与另一台电脑一致的版本,或升级另一台电脑的NumPy后调整代码逻辑。
  • 显式指定object类型:转换数组时明确指定dtype=object,强制NumPy生成兼容的数组:
    ultimate = np.array(ultimate, dtype=object)
    
  • 检查并修正数据:遍历ultimate列表,确认所有元组结构统一为“长度为5的数组 + 整数”的组合,剔除或修正结构异常的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:37:11