Frage Kombinieren von zwei numperigen Arrays zu einem Array mit dem größten Wert aus jedem Array


Ich möchte zwei numpige Arrays kombinieren, um ein Array mit den größten Werten aus jedem Array zu erstellen.

import numpy as np

a  = np.array([[ 0.,  0.,  0.5],
               [ 0.1,  0.5,  0.5],
               [ 0.1,  0.,  0.]])

b  = np.array([[ 0.,  0.,  0.0],
               [ 0.5,  0.1,  0.5],
               [ 0.5,  0.1,  0.]])

Ich würde gerne produzieren

array([[ 0.,  0.,  0.5],
       [ 0.5,  0.5,  0.5],
       [ 0.5,  0.1,  0.]])

Ich weiß, dass du es kannst

a += b

was dazu führt

array([[ 0. ,  0. ,  0.5],
       [ 0.6,  0.6,  1. ],
       [ 0.6,  0.1,  0. ]])

Das ist eindeutig nicht das, wonach ich suche. Es scheint so ein einfaches Problem zu sein und ich gehe davon aus, dass es das wahrscheinlich ist.


8
2018-02-26 12:25


Ursprung


Antworten:


Sie suchen nach dem elementweisen Maximum.

Beispiel:

>>> np.maximum([2, 3, 4], [1, 5, 2])
array([2, 5, 4])

http://docs.scipy.org/doc/numpy/reference/generated/numpy.maximum.html


6
2018-02-26 12:28



Sie können verwenden np.maximum um das elementweise Maximum der beiden Arrays zu berechnen:

>>> np.maximum(a, b)
array([[ 0. ,  0. ,  0.5],
       [ 0.5,  0.5,  0.5],
       [ 0.5,  0.1,  0. ]])

Dies funktioniert mit zwei beliebigen Arrays, solange sie die gleiche Form haben oder eine sein können Übertragung zu der Form des anderen.

Um das Array zu ändern a In-Place, können Sie die Ausgabe von umleiten np.maximum zurück zu a:

np.maximum(a, b, out=a)

Es gibt auch np.minimum um das elementweise Minimum von zwei Arrays zu berechnen.


4
2018-02-26 12:28



inds =  b > a
a[inds] = b[inds]

Dies ändert das ursprüngliche Array a welches ist was += tut in Ihrem Beispiel das kann oder nicht sein was Sie wollen.


3
2018-02-26 12:30