Numpy Element-wise In Operation
Suppose I have a column vector y with length n, and I have a matrix X of size n*m. I want to check for each element i in y, whether the element is in the corresponding row in X. Wh
Solution 1:
Vectorized approach using broadcasting
-
((X == y[:,None]).any(1)).astype(int)
Sample run -
In [41]: X # Input 1Out[41]:
array([[1, 2, 3],
[3, 4, 5],
[4, 3, 2],
[2, 2, 2]])
In [42]: y # Input 2Out[42]: array([1, 2, 3, 4])
In [43]: X == y[:,None] # Broadcasted comparison
Out[43]:
array([[ True, False, False],
[False, False, False],
[False, True, False],
[False, False, False]], dtype=bool)
In [44]: (X == y[:,None]).any(1) # Checkforanymatch along eachrowOut[44]: array([ True, False, True, False], dtype=bool)
In [45]: ((X == y[:,None]).any(1)).astype(int) # Convertto1s and0s
Out[45]: array([1, 0, 1, 0])
Post a Comment for "Numpy Element-wise In Operation"