2015-02-26 12 views
8

Her diziden en büyük değerlere sahip bir dizi oluşturmak için iki numpy dizisini birleştirmek istiyorum.Her bir diziden en büyük değere sahip bir dizi oluşturmak için iki numpy dizisini birleştirir

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.]]) 
Sana yapabileceğini biliyorum

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

üretmek istiyoruz

Bu Peşinde olduğum gibi değil açıkça

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

sonuçlanır

a += b 

. Bu kadar kolay bir problem gibi görünüyor ve sanırım büyük ihtimalle öyle.

cevap

4

Sen İki dizinin öğeye göre maksimum hesaplamak için np.maximum kullanabilirsiniz:

>>> np.maximum(a, b) 
array([[ 0. , 0. , 0.5], 
     [ 0.5, 0.5, 0.5], 
     [ 0.5, 0.1, 0. ]]) 
Bu, herhangi iki diziyle çalışır

, aynı şekildeyse veya biri diğerinin şekline broadcast olabilir.

yerinde diziyi a değiştirmek için, a geri np.maximum çıktısını yönlendirebilirsiniz: İki dizinin öğeye göre asgari hesaplanması için de np.minimum vardır

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

.

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

Bu += istediğini ya olabilir veya olmayabilir hangi örnekte ne yaptığını orijinal diziyi a değiştirir.

İlgili konular