2014-12-21 2 views
1

Я прочитал 3 растровых изображений одинаковой формы (500 на 500) в качестве Numpy массива, и поместить их таким образом:Арифметика в пределах Numpy массивов

rasters = np.array(A,B,C) 

где А, В, С являются 2d Numpy массивы принадлежащих каждому изображению.

Теперь я должен вычислить следующее:

result1 = B-A 
result2 = C-B 

Затем

final_result = np.max([result1,result2],axis = 0) 

final_result должны иметь такую ​​же форму А или В или С (т.е., 500 на 500)

Как это сделать?

+0

Является ли вопрос получения A.B и C из 'rasters' или делать вычитания, или что-то еще? –

+0

Проблема заключается в выполнении подстановок – Borys

+0

'np.array (A, B, C)' или 'np.array ([A, B, C])'? – hpaulj

ответ

3

Вы можете использовать np.diff и np.max:

np.max(np.diff(rasters, axis=0), axis=0) 

В качестве альтернативы:

np.max(rasters[1:] - rasters[:-1], axis=0) 
1

B-A выполняется с использованием np.subtract(B,A).

+1

В моей реальной проблеме, A, B, C ... много. Так что искать питонический способ сделать это. – Borys

+0

И я хочу сделать это из «растров». – Borys

+0

@simen: «Я прочитал 3 растровых изображения» не совсем верно, и не было «Проблема заключается в вычитаниях». Хорошо знать. –

Смежные вопросы