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

Python绘制Contour Plot报unhashable type: 'numpy.ndarray'错如何解决?

问题原因与解决方法
  • 报错TypeError: unhashable type: 'numpy.ndarray'的核心原因是你向meshgrid传入了二维的DataFrame结构,np.meshgrid仅支持一维数组作为输入,且你调用时未加np.前缀,触发了类型校验错误。
  • 额外问题:你构造的Matrix形状和meshgrid输出的网格数组形状不匹配,plt.contour要求输入的X、Y、Z三个二维数组形状完全一致。
  • 可简化代码中逐列提取D3-D8的冗余操作,直接批量提取对应列即可。
修正后可运行代码
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 读取原始数据
load_var = pd.read_excel(r'path\stack.xlsx')

# 提取一维的Time、Nd数组,无需额外封装为DataFrame
x = load_var['Time'].values
# 去重得到Nd的6个唯一取值,和D3-D8的列数对应,若你的Nd列本身就是6个值可直接取.values
y = load_var['Nd'].unique()

# 批量提取D3到D8列生成Matrix,无需逐列拼接
Matrix = load_var.loc[0:3337, ['D3','D4','D5','D6','D7','D8']].values.astype(float)

# 生成网格,传入一维数组,必须加np.前缀
X, Y = np.meshgrid(x, y)

# 自动匹配Matrix和网格的形状,若维度不匹配则转置
if Matrix.shape != X.shape:
    Matrix = Matrix.T

# 绘制等高线图
plt.contour(X, Y, Matrix)
plt.xlabel('Time')
plt.ylabel('Nd')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:27:00