I’m trying to execute the following
>> from numpy import *
>> x = array([[3,2,3],[4,4,4]])
>> y = set(x)
TypeError: unhashable type: 'numpy.ndarray'
How can I easily and efficiently create a set with all the elements from the Numpy array?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If you want a set of the elements, here is another, probably faster way:
PS: after performing comparisons between
x.flat,x.flatten(), andx.ravel()on a 10×100 array, I found out that they all perform at about the same speed. For a 3×3 array, the fastest version is the iterator version:which I would recommend because it is the less memory expensive version (it scales up well with the size of the array).
PPS: There is also a NumPy function that does something similar:
This does produce a NumPy array with the same element as
set(x.flat), but as a NumPy array. This is very fast (almost 10 times faster), but if you need aset, then doingset(numpy.unique(x))is a bit slower than the other procedures (building a set comes with a large overhead).