我想比較兩個相同大小的numpy數組在一起。我想要類似Matlab的答案:如何比較python中的兩個數組,命中爲1,非命中爲0?
a = [ 1 2 3];
b = [ 1 -2 3];
c = a==b; % c = [1 0 1]
我該怎麼做在python中?有沒有任何功能,或者我應該用代碼做到這一點?
謝謝:)
我想比較兩個相同大小的numpy數組在一起。我想要類似Matlab的答案:如何比較python中的兩個數組,命中爲1,非命中爲0?
a = [ 1 2 3];
b = [ 1 -2 3];
c = a==b; % c = [1 0 1]
我該怎麼做在python中?有沒有任何功能,或者我應該用代碼做到這一點?
謝謝:)
與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]
或者使用map
與operator.eq
:
>>> import operator
>>> map(operator.eq, a, b)
[True, False, True]
沒有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]
也可以將bool轉換爲int,因此它與問題描述相匹配,但是是+1 –
@JoranBeasley謝謝。我更新了我的答案。 – Hyperboreus
一個辦法做到這一點,沒有numpy的:
c = []
for i,j in zip(a,b):
if i==j:
c.append(1)
else:
c.append(0)
既然你提到numpy的,'np.array( [1,2,3])== np.array([1,-2,3])'返回'np.array([True,False,True])''。 – Iguananaut