如何在python中比较两个数组,命中为1,非命中为0?
我想比较两个大小相同的numpy数组。我想要类似的答案,比如Matlab:如何在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)] >&
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非常感谢。我更新了我的答案。