两个 numpy 数组中的较大者,逐元素
Greater of two numpy arrays, element-wise
我有两个 numpy 数组,我试图找到其中较大的一个(元素明智,即所有元素都应该更大)
import numpy as np
a = np.array([4,5,6])
b = np.array([7,8,9])
if b > a:
print 'True'
但我没有得到所需的输出并出现错误
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
使用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
。
相反,您需要检查 b > a
中的 所有 个值是否为 True
。使用 NumPy 的 all()
来做到这一点:
if (b > a).all():
print 'True'
我有两个 numpy 数组,我试图找到其中较大的一个(元素明智,即所有元素都应该更大)
import numpy as np
a = np.array([4,5,6])
b = np.array([7,8,9])
if b > a:
print 'True'
但我没有得到所需的输出并出现错误
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
使用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
。
相反,您需要检查 b > a
中的 所有 个值是否为 True
。使用 NumPy 的 all()
来做到这一点:
if (b > a).all():
print 'True'