Мы можем использовать np.unique
с его необязательным аргументом return_counts
, чтобы получить счетчики для каждой уникальной строки и, наконец, получить argmax()
, чтобы выбрать тот с максимальным количеством -
# a is input array
unq, count = np.unique(a, axis=0, return_counts=True)
out = unq[count.argmax()]
Для данных типа uint8
мы также можем преобразовать в 1D
, сократив каждую строку до скалярной, а затем использовать np.unique
-
s = 256**np.arange(a.shape[-1])
_, idx, count = np.unique(a.dot(s), return_index=True, return_counts=True)
out = a[idx[count.argmax()]]
Если мы работаем с цветомДля изображений, которые 3D
(последняя ось является цветовым каналом) и которые хотят получить наиболее доминирующий цвет, нам нужно изменить форму на a.reshape(-1,a.shape[-1])
и затем передать ее предлагаемым методам.