2015-01-31 3 views
0

У меня есть два Numpy массивов, и я пытаюсь найти большую из них (поэлементно, то есть все элементы должны быть больше)Больших из двух Numpy массивов, поэлементно

import numpy as np 

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

if b > a: 
    print 'True' 

Но я не получая желаемый результат, и получить ошибку

+0

возможно дубликат [Сравнение двух Numpy массивов на равенство, поэлементно] (http://stackoverflow.com/questions/10580676/comparing-two-numpy-arrays-for -equality-element-wise) – smci

ответ

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

Спасибо! Это сработало! – HVN19

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

b > a производит массив, содержащий True/False значения.

Однако Python не может определить, должны ли массивы NumPy с более чем одним элементом быть True или False. Как должен оцениваться массив, такой как array([True, False, True])? A ValueError возникает из-за потенциальной двусмысленности.

Вместо этого вы должны проверить, все из b > a являются True. Используйте NumPy-х all() сделать это:

if (b > a).all(): 
    print 'True' 
Смежные вопросы