2016-03-24 5 views
2

У меня есть несколько массивов numpy с одинаковым размером MxN (прогнозирует SVM). Мне нужно создать новый с тем же размером, но только с более высокими значениями каждой позиции. Пример:Объединение значений в массивах numpy

[[1,2,1,3],   [[2,1,5,1],   [[2,2,5,3], 
[2,5,2,1]] and [1,3,5,5]] result [2,5,5,5]] 
[4,1,3,1]]   [4,2,1,2]]   [4,2,3,2]] 

Сумма и продукт сделаны так: predict = a * b * c, где a, b and c являются Numpy массивы с одинаковым размером, считанной из другого предсказывает.

спасибо.

ответ

7

Вы можете использовать numpy.maximum для вычисления максимального поэлементного между входными массивами.

A = np.array([[1,2,1,3], [2,5,2,1], [4,1,3,1]]) 
B = np.array([[2,1,5,1], [1,3,5,5], [4,2,1,2]]) 

C = np.maximum(A, B) 

# array([[2, 2, 5, 3], 
#  [2, 5, 5, 5], 
#  [4, 2, 3, 2]]) 
+0

Похоже на то, что и быстро, и быстро! – Divakar

1

Вы можете использовать np.max() на 0-й оси:

>>> np.max((a,b), axis=0) 
array([[2, 2, 5, 3], 
     [2, 5, 5, 5], 
     [4, 2, 3, 2]]) 
3

Вы можете использовать np.where -

np.where(a>b,a,b) 

np.where Здесь делает выбор между a и b на основе маски a>b, таким образом, имитируя выбор максимального числа соответствующих элементов в a и b.

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