如何在python中比较两个数组,命中为1,非命中为0?

如何在python中比较两个数组,命中为1,非命中为0?,python,arrays,numpy,Python,Arrays,Numpy,我想比较两个大小相同的numpy数组。我想要类似的答案,比如Matlab: a = [ 1 2 3]; b = [ 1 -2 3]; c = a==b; % c = [1 0 1] 在python中如何实现这一点?有没有函数或者我应该用代码来实现 谢谢:)不带numpy: >>> a = [1,2,3] >>> b = [1,-2,3] >>> c = [a==b for a, b in zip(a,b)] >&

我想比较两个大小相同的numpy数组。我想要类似的答案,比如Matlab:

  a = [ 1 2 3];
  b = [ 1 -2 3];
  c = a==b; % c = [1 0 1]
在python中如何实现这一点?有没有函数或者我应该用代码来实现

谢谢:)

不带numpy:

>>> a = [1,2,3]     
>>> b = [1,-2,3]
>>> c = [a==b for a, b in zip(a,b)]
>>> c
[True, False, True]
c = []
for i,j in zip(a,b):
    if i==j:
        c.append(1)
    else:
        c.append(0)
或按Joran所示铸造至int:

>>> c = [int(a==b) for a, b in zip(a,b)]
>>> c
[1, 0, 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]
或者与
操作符一起使用
映射
。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]
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])
。也可以将bool强制转换为int,以便与问题描述匹配,但是是的+1@JoranBeasley非常感谢。我更新了我的答案。