2017-07-26 12 views
1

に低い値を変更し、今私たちは二つの配列、要素に2つの配列を比較し、ゼロ

a = [[1.,2.,3.,4.,5.,6.,7.,8.,9.],[9.,8.,7.,6.,5.,4.,3.,2.,1.]] 

b = [[2.,2.,1.,2.,0.,2.,1.,2.,0.],[2.,2.,1.,2.,0.,2.,1.,2.,0.]] 

を持って、次の機能を達成するための任意の高速な方法があります: 要素によりこれら二つの配列を比較し、次のルールで配列[]を変更します。

if a[i,j] > b[i,j]: 

    a[i,j] = a[i,j] 

else 

a[i,j] = 0 

私はループがそれを行うことができますことを知っているが、それを行うには、他のより高速な方法があるかどうか、私は疑問に思って。

答えて

3
import numpy as np 
a = np.array([[1.,2.,3.,4.,5.,6.,7.,8.,9.],[9.,8.,7.,6.,5.,4.,3.,2.,1.]]) 
b = np.array([[2.,2.,1.,2.,0.,2.,1.,2.,0.],[2.,2.,1.,2.,0.,2.,1.,2.,0.]]) 

gr = np.greater(a,b) 
a = np.multiply(a,gr) 

GR及び配列はなる:

[[False False True True True True True True True] 
[ True True True True True True True False True]] 

array([[ 0., 0., 3., 4., 5., 6., 7., 8., 9.], 
     [ 9., 8., 7., 6., 5., 4., 3., 0., 1.]]) 
関連する問題