У меня есть массив доступных цветов, позвольте мне сказать, что они находятся в пространстве YCrCb, я хочу отсортировать массив по Y-каналу (первому каналу) без путаницы с цветными элементами.
Мой массив:
colors = np.array([[[191, 142, 109],
[196, 138, 116],
[193, 144, 111],
[198, 140, 118]]], dtype=np.uint8)
colors.shape
# (1, 4, 3)
Мой желаемый вывод:
array([[[191, 142, 109],
[193, 144, 111],
[196, 138, 116],
[198, 140, 118]]], dtype=uint8)
Что я пробовал и не работает
Я использовал np.sort
. Но я заметил, что если я это сделаю:
np.sort(colors, axis=2)
# array([[[109, 142, 191],
# [116, 138, 196],
# [111, 144, 193],
# [118, 140, 198]]], dtype=uint8)
Он не переупорядочивает элементы, а переупорядочивает значения каналов в элементах.
Еще одна тактика, которую я использовал:
np.sort(pallete.reshape(-1, 3), axis=0)
# array([[191, 138, 109],
# [193, 140, 111],
# [196, 142, 116],
# [198, 144, 118]], dtype=uint8)
Тот, кто ввел меня в заблуждение, очень похож на то, что я хочу, но он спутывает элементы цветов.