簡體   English   中英

兩個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'

但是我沒有得到想要的輸出並出現錯誤

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

b > a產生一個包含True / False值的數組。

但是,Python無法確定具有多個元素的NumPy數組應為True還是False 應該如何評估諸如array([True, False, True])類的array([True, False, True]) 由於存在潛在的歧義而引發ValueError

相反,您需要檢查b > a中的所有值是否均為True 使用NumPy的all()執行此操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM