更多的两个numpy数组,元素方面

时间:2015-01-31 21:17:20

标签: python arrays numpy elementwise-operations

我有两个numpy数组,我试图找到更大的数组(元素明智,即所有元素都应该更大)

import numpy as np

a = np.array([4,5,6])
b = np.array([7,8,9])

if b > a:
    print 'True'

但我没有得到所需的输出并收到错误

3 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:1)

if all(b>a):
   print 'True'

对于多维数组,请使用:

if np.all(b>a):
   print 'True'

但是all()对于单维数组更快,如果您的数组非常大,则可能很有用:

>>> 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

答案 2 :(得分:1)

b > a生成一个包含True / False值的数组。

但是,Python无法确定具有多个元素的NumPy数组是True还是False。如何评估array([True, False, True])等数组?由于潜在的歧义,引发ValueError

相反,您需要检查b > a中的所有值是否为True。使用NumPy all()执行此操作:

if (b > a).all():
    print 'True'