I am sure this is an already answered question, but I couldn't find anywhere.
I want to check that all the element of each row of a 2D numpy array is the same and 0 is a possibility.
For example:
>>> a = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]])
>>> a
array([[0, 0, 0],
[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
>>> function_to_find(a)
True
Looking around there are suggestions to use all() and any(), but I don't think it's my case.
If I use them in this way:
>>> a = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]])
>>> a.all()
False
>>> a.all(axis=1)
array([False, True, True, True])
>>> a.all(axis=1).any()
True
but also this give me True and I want False:
>>> a = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 5]])
>>> a.all()
False
>>> a.all(axis=1)
array([False, True, True, True])
>>> a.all(axis=1).any()
True
A solution could be:
results_bool = np.array([])
for i in a:
results_bool = np.append(results_bool, np.all(i == i[0]))
result = np.all(results_bool)
but I would prefer to avoid loops and use numpy.
Any idea?
(a==a[:,[0]]).all()can be an option