Чтобы сделать это, вам сначала нужно изменить форму ndarray
(np.reshape
):
a = np.random.randint(1,10,(500, 32, 32, 3))
a_r = np.reshape(a, (500, 1024, 3))
print(a_r.shape)
# (500, 1024, 3)
Теперь, чтобы преобразовать значения RGB
по последнему измерению в шестнадцатеричное представление, как вы предлагаете, вы можете определить функцию, которая возвращает шестнадцатеричное представление трех значений с простым форматированием строки:
def rgb_to_hex(x):
return '#{:02X}{:02X}{:02X}'.format(*rgb.reshape(3))
Чтобы применить преобразование ко всем строкам на последней оси, вы можете использовать np.apply_along_axis
:
a_new = np.apply_along_axis(rgb2hex, axis=-1, arr=a_r).shape
print(a_new.shape)
# (500, 1024)