Мне нужно было создать изображение из массива.Каждый пиксель должен получить значение r, g, b, alpha на основе целого числа в массиве.С этой целью я написал следующий фрагмент кода:
let r будет массивом с целыми числами в диапазоне от -2 до 0
print(r)
array([[-1, -1, -1, ..., 0, 0, 0],
[-1, -1, -1, ..., 0, 0, 0],
[-1, -1, -1, ..., 0, 0, 0],
...,
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0]], dtype=int32)
colors - это словарь, кодирующий r, g, b, альфа-значения
print(colors)
{-2: ['0', '0', '0', '0'],
-1: ['1', '1', '1', '0.5'],
0: ['0', '0', '0', '0.5']}
, чтобы получить изображение размеров a.shape [0], a.shape [1], 4 Я делаю следующее
r = r.astype('int32')
im = r.reshape(r.shape[0]*r.shape[1])
im = [ colors[j] for j in im ]
im = np.reshape(im, (r.shape[0], r.shape[1], 4))
im = im.astype('float64')
toimage(im, cmin = 0, cmax = 1 ).save(dir_to + '/' + 'label' + '/' + str(zoom) + '/' + str(x) + '/' + str(y) + '.png')
Этот код работает нормально, но имеет для изображения только 256 на 256 уже время выполнения более 0,2 секунд.У кого-нибудь есть какие-нибудь предложения, как это оптимизировать?
К сожалению, массивные массивы не позволяют мне транслировать массив в запись.