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

Tom*_*ale 3 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'
Run Code Online (Sandbox Code Playgroud)

有问题的代码.ipynb来自Coursera.

它在他们的系统上工作正常,但似乎我在本地有一个库版本问题.

代码是:

plt.scatter(X[0, :], X[1, :], c=y, cmap=plt.cm.Spectral)
Run Code Online (Sandbox Code Playgroud)

Tom*_*ale 13

更改:

plt.scatter(X[0, :], X[1, :], c=y, cmap=plt.cm.Spectral)
Run Code Online (Sandbox Code Playgroud)

至:

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

这会使数组变平y为一维,然后将其转换为一个列表,它to_rgba很乐意将其作为可以散列的内容进行消化.


Coursera深度学习的学生:

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

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