2014-01-07 28 views
-5

我想比較兩個相同大小的numpy數組在一起。我想要類似Matlab的答案:如何比較python中的兩個數組,命中爲1,非命中爲0?

a = [ 1 2 3]; 
    b = [ 1 -2 3]; 
    c = a==b; % c = [1 0 1] 

我該怎麼做在python中?有沒有任何功能,或者我應該用代碼做到這一點?

謝謝:)

+3

既然你提到numpy的,'np.array( [1,2,3])== np.array([1,-2,3])'返回'np.array([True,False,True])''。 – Iguananaut

回答

1

與NumPy已經提供了相當多的是,你正在尋找相同的結果:

>>> import numpy as np 
>>> a = np.array([1, 2, 3]) 
>>> b = np.array([1, -2, 3]) 
>>> c = a == b 
>>> c 
array([ True, False, True], dtype=bool) 

沒有NumPy的:

>>> a = [1, 2, 3] 
>>> b = [1, -2, 3] 
>>> [x == y for x, y in zip(a, b)] 
[True, False, True] 

或者使用mapoperator.eq

>>> import operator 
>>> map(operator.eq, a, b) 
[True, False, True] 
3

沒有numpy的:

>>> a = [1,2,3]  
>>> b = [1,-2,3] 
>>> c = [a==b for a, b in zip(a,b)] 
>>> c 
[True, False, True] 

或鑄造爲int的Joran表示:

>>> c = [int(a==b) for a, b in zip(a,b)] 
>>> c 
[1, 0, 1] 
+0

也可以將bool轉換爲int,因此它與問題描述相匹配,但是是+1 –

+0

@JoranBeasley謝謝。我更新了我的答案。 – Hyperboreus

0

一個辦法做到這一點,沒有numpy的:

c = [] 
for i,j in zip(a,b): 
    if i==j: 
     c.append(1) 
    else: 
     c.append(0) 
相關問題