Я новичок в Python и пытаюсь усреднить два двумерных массива NumPy с формой (1024,1024).Делать это так быстро:
newImage = (image1 + image2) / 2
Но теперь у изображений есть «маска», которая делает недействительными определенные элементы, если они установлены на ноль.Это означает, что если один из элементов равен нулю, результирующий элемент также должен быть равен нулю.Моё тривиальное решение:
newImage = numpy.zeros( (1024,1024) , dtype=numpy.int16 )
for y in xrange(newImage.shape[0]):
for x in xrange(newImage.shape[1]):
val1 = image1[y][x]
val2 = image2[y][x]
if val1!=0 and val2!=0:
newImage[y][x] = (val1 + val2) / 2
Но это действительно медленно.Я не рассчитывал время, но, похоже, он медленнее в 100 раз.
Я также пытался использовать лямбда-оператор и "map", но это не возвращает массив NumPy.