私は2つのnumpy配列を持っていて、それらのうち大きい方を見つけようとしています(要素ごと、つまり、すべての要素が大きいはずです)
import numpy as np
a = np.array([4,5,6])
b = np.array([7,8,9])
if b > a:
print 'True'
しかし、目的の出力が得られず、エラーが発生します
私は2つのnumpy配列を持っていて、それらのうち大きい方を見つけようとしています(要素ごと、つまり、すべての要素が大きいはずです)
import numpy as np
a = np.array([4,5,6])
b = np.array([7,8,9])
if b > a:
print 'True'
しかし、目的の出力が得られず、エラーが発生します
使用するnp.all()
In [1]: import numpy as np
In [2]: a = np.array([4,5,6])
In [3]: b = np.array([7,8,9])
In [4]: np.all(b > a)
Out[4]: True
b > a
True
/False
値を含む配列を生成します。
ただし、Python は、複数の要素を持つ NumPy 配列が か かどうかを判断できませTrue
んFalse
。のような配列はどのようarray([True, False, True])
に評価されるべきですか? ValueError
潜在的なあいまいさのためにAが発生します。
代わりに、すべての値が であるb > a
かどうかを確認する必要がありますTrue
。all()
これを行うにはNumPy を使用します。
if (b > a).all():
print 'True'
if all(b>a):
print 'True'
多次元配列の場合、次を使用します。
if np.all(b>a):
print 'True'
ただしall()
、1 次元配列の場合は高速であり、配列が非常に大きい場合に役立つ場合があります。
>>> timeit('a = np.array([4,5,6]); b = np.array([7,8,9]); all(a>b)',number=100000,setup='import numpy as np')
0.34104180335998535
>>> timeit('a = np.array([4,5,6]); b = np.array([7,8,9]); np.all(a>b)',number=100000,setup='import numpy as np')
0.9201719760894775