6

I'm getting the following error:

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'

The code in question is from a .ipynb downloaded from Coursera.

It works fine on their system, but it seems that I have a library versioning problem locally.

The code is:

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

1 Answer 1

16

Change:

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

to:

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

This flattens the array y to be one-dimensional, and then turns it into a list, which to_rgba is happy to digest as something it can hash.


Coursera Deep Learning students:

You'll likely find the offending line(s) of code in one of the *util*.py files. Look for scatter in the traceback to get the filename.

I saw this question raised about 8 times on the forum. Please upvote both question and answer if they've been useful.

Sign up to request clarification or add additional context in comments.

1 Comment

this solution works but you can write it simpler as c=y.ravel() - the tolist() cast isnt't necessary

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.