Python newbie here, I have read Filter rows of a numpy array? and the doc but still can't figure out how to code it the python way.
Example array I have: (the real data is 50000 x 10)
a = numpy.asarray([[2,'a'],[3,'b'],[4,'c'],[5,'d']])
filter = ['a','c']
I need to find all rows in a with a[:, 1] in filter. Expected result:
[[2,'a'],[4,'c']]
My current code is this:
numpy.asarray([x for x in a if x[1] in filter ])
It works okay but I have read somewhere that it is not efficient. What is the proper numpy method for this?
Edit:
Thanks for all the correct answers! Unfortunately I can only mark one as accepted answer. I am surprised that numpy.in1d is not turned up in google searchs for numpy filter 2d array.
解决方案
You can use a b