【问题标题】:matplotlib scatter: TypeError: unhashable type: 'numpy.ndarray'matplotlib scatter: TypeError: unhashable type: 'numpy.ndarray'
【发布时间】:2018-05-19 13:29:42
【问题描述】:

我收到以下错误:

TypeError                                 Traceback (most recent call last)
~/.local/share/miniconda3/lib/python3.6/site-packages/matplotlib/colors.py in to_rgba(c, alpha)
    154     try:
--> 155         rgba = _colors_full_map.cache[c, alpha]
    156     except (KeyError, TypeError):  # Not in cache, or unhashable.

TypeError: unhashable type: 'numpy.ndarray'

有问题的代码来自从 Coursera 下载的.ipynb

它在他们的系统上运行良好,但似乎我在本地遇到了库版本问题。

代码是:

plt.scatter(X[0, :], X[1, :], c=y, cmap=plt.cm.Spectral)

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    变化:

    plt.scatter(X[0, :], X[1, :], c=y, cmap=plt.cm.Spectral)
    

    到:

    plt.scatter(X[0, :], X[1, :], c=y.ravel().tolist(), cmap=plt.cm.Spectral)
    

    这会将数组 y 扁平化为一维,然后将其转换为一个列表,to_rgba 很乐意将其消化为可以散列的东西。


    Coursera 深度学习学生:

    您可能会在*util*.py 文件之一中找到有问题的代码行。在回溯中查找scatter 以获取文件名。

    我在论坛上看到这个问题被提出了大约 8 次。如果对问题和答案有用,请点赞。

    【讨论】:

    • 此解决方案有效,但您可以将其编写为更简单的 c=y.ravel() - 不需要 tolist() 强制转换
    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多