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

Matplotlib散点图报错:TypeError: unhashable type: 'numpy.ndarray'求助

解决Matplotlib中TypeError: unhashable type: 'numpy.ndarray'的问题

这个错误我之前在旧版本Matplotlib上碰到过,和你描述的情况完全一致——平台上跑正常本地报错,本质就是Matplotlib版本兼容性问题。

问题根源

你用的本地Matplotlib版本(结合Python3.6来看,大概率是3.1.0之前的旧版本)在处理颜色参数时,会尝试把传入的值作为缓存键存储,但numpy数组是不可哈希的类型,直接传入就触发了这个错误。而Coursera平台上的Matplotlib版本更新,已经修复了这个限制,允许直接传入numpy数组作为颜色参数。

具体解决方案

方案1:升级Matplotlib(推荐)

因为你用的是Miniconda环境,直接执行以下命令升级到兼容Python3.6的最新稳定版:

conda install -c conda-forge matplotlib>=3.1.0

注:Python3.6最高支持Matplotlib 3.3.4版本,这个版本已经修复了该问题。

方案2:临时适配旧版本(仅当无法升级时用)

如果暂时不能升级库,就把传入的numpy数组转换成可哈希的类型,比如:

  • 如果是单个颜色的数组(比如np.array([0.2, 0.4, 0.6])),转成元组:
    c = tuple(your_color_array)
    
  • 如果是单元素的颜色数组,直接提取标量:
    c = your_color_array.item()
    
  • 如果是批量颜色数组,转成列表格式:
    c = your_color_array.tolist()
    

验证方法

升级或修改代码后,先运行一行测试代码确认问题解决:

import numpy as np
import matplotlib.pyplot as plt
plt.scatter([1,2,3], [4,5,6], c=np.array([0.1, 0.5, 0.9]))
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:56