matplotlib scatter:TypeError:unhashable type:' numpy.ndarray'

时间:2018-04-15 09:21:22

标签: python matplotlib

我收到以下错误:

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)

1 个答案:

答案 0 :(得分:11)

变化:

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 Deep Learning学生:

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

我在论坛上看到了这个问题大约8次。如果它们有用,请同时回答问题和答案。