IIUC, вы можете просто использовать np.dstack
и reshape
, или np.dstack
и concatenate
np.dstack(arr).reshape(-1,3)
# equivalent:
np.concatenate(np.dstack(arr))
Например:
arr = np.random.randint(0,256,(3,5,5))
>>> arr
array([[[150, 38, 34, 41, 24],
[ 76, 135, 93, 149, 142],
[150, 123, 198, 11, 34],
[ 24, 179, 132, 175, 218],
[ 46, 233, 138, 215, 97]],
[[194, 153, 29, 200, 133],
[247, 101, 18, 70, 112],
[164, 225, 141, 196, 131],
[ 15, 86, 22, 234, 166],
[163, 97, 94, 205, 56]],
[[117, 56, 28, 1, 104],
[138, 138, 148, 241, 44],
[ 73, 57, 179, 142, 140],
[ 55, 160, 240, 189, 13],
[244, 36, 56, 241, 33]]])
>>> np.dstack(arr).reshape(-1,3)
array([[150, 194, 117],
[ 38, 153, 56],
[ 34, 29, 28],
[ 41, 200, 1],
[ 24, 133, 104],
[ 76, 247, 138],
[135, 101, 138],
[ 93, 18, 148],
[149, 70, 241],
[142, 112, 44],
[150, 164, 73],
[123, 225, 57],
[198, 141, 179],
[ 11, 196, 142],
[ 34, 131, 140],
[ 24, 15, 55],
[179, 86, 160],
[132, 22, 240],
[175, 234, 189],
[218, 166, 13],
[ 46, 163, 244],
[233, 97, 36],
[138, 94, 56],
[215, 205, 241],
[ 97, 56, 33]])
Используя предоставленную функциюв ответе, который вы связали , вы можете получить самые близкие цвета этого изображения:
>>> [get_colour_name(i)[1] for i in np.dstack(arr).reshape(-1,3)]
['darkseagreen', 'forestgreen', 'black', 'limegreen', 'seagreen', 'mediumaquamarine', 'grey', 'indigo', 'blueviolet', 'sienna', 'yellowgreen', 'yellowgreen', 'rosybrown', 'lightseagreen', 'darkcyan', 'midnightblue', 'palevioletred', 'blueviolet', 'powderblue', 'goldenrod', 'dodgerblue', 'chocolate', 'sienna', 'gainsboro', 'saddlebrown']