Я хочу заменить значения np.darray на 1d массивы, которые представляют пиксели RGB.
Например:
array([[0.7, 0.2],
[0.1, 0.4]])
преобразовать, по правилу array_value> 0.5, в
array([[[255, 255, 255],
[ 0, 0, 0]],
[[ 0, 0, 0],
[ 0, 0, 0]]])
Есть ли более эффективный по времени метод для этого, чем np.apply_along_axis?
Я могу сделать это с помощью np.apply_along_axis, но этот метод довольно медленный:
values = np.array([[0.7, 0.2],
[0.1, 0.4]])
pixel_0 = np.array([0, 0, 0])
pixel_1 = np.array([255, 255, 255])
replace_scalar_by_RGB_pixel = lambda x: pixel_1 if x > 0.5 else pixel_0
np.apply_along_axis(replace_scalar_by_RGB_pixel, 2, np.expand_dims(values, 2))
Output:
array([[[255, 255, 255],
[ 0, 0, 0]],
[[ 0, 0, 0],
[ 0, 0, 0]]])