Python 比较两个numpy数组行值错误

Python 比较两个numpy数组行值错误,python,numpy,Python,Numpy,我想逐行比较两个NumPy数组,并返回相同行数 如果我使用以下代码: a=np.array([[1,2],[3,4]]) b=np.array([[1,4],[2,3]]) comp= np.logical_and(np.equal(a,b)) correct=numpy.sum(comp) 我得到以下错误: ValueError: invalid number of arguments 然而,这是可行的: np.logical_and([True, False], [False, Fals

我想逐行比较两个
NumPy
数组,并返回相同行数

如果我使用以下代码:

a=np.array([[1,2],[3,4]])
b=np.array([[1,4],[2,3]])
comp= np.logical_and(np.equal(a,b))
correct=numpy.sum(comp)
我得到以下错误:

ValueError: invalid number of arguments
然而,这是可行的:

np.logical_and([True, False], [False, False])

这可能很愚蠢,但我是新来的
NumPy
。请帮忙。

我想你想要的东西类似于:

np.sum(np.all(np.equal(a, b), axis=1))
如果您愿意,可以将其简写为:

np.sum(np.all(a == b, axis=1))

这将返回以下内容的
1

a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [5, 6]])
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 3], [5, 6]])
但是
0
用于:

a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [5, 6]])
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 3], [5, 6]])

只是为了扩展@mgilson的答案。你的想法是对的,首先你做到了:

a = np.array([[1,2],[3,4]])
b = np.array([[1,4],[2,3]])
np.equal(a, b)
>>>array([[ True, False],
   [False, False]], dtype=bool)
现在,您希望将其传递给np.logical_和(),如果您查看文档,它将接受两个变量,x1和x2()

因此,如果传入上述数组,将得到以下结果:

np.logical_and(np.array([[True, False], [False, False]]))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid number of arguments

像这样的东西怎么样:

import numpy as np

a = np.array([['a', 'b'], ['c', 'd'],\
                  ['e', 't'], ['a', 'b'], ['a', 'b']])
[['a' 'b']
 ['c' 'd']
 ['e' 't']
 ['a' 'b']
 ['a' 'b']]

b = np.array([['a','b'],['e','t'],['r','t']])
[['a' 'b']
 ['e' 't']
 ['r' 't']]

shared_rows=0

for row in b:
    temp=a==row
    shared_rows+=sum(np.sum(temp, axis=1)==a.shape[1])

print(shared_rows)
4

谢谢你的编辑@zero323。你是说
np.array([[1,2],[3,4]])
?@jonnybazookatone是的!抱歉弄错了。
np.logical_和(*np.equal(a,b))
?在评论@zero323上击败我,写出答案,他可以接受;(太好了!谢谢你的回答!你能帮我理解我的方法有什么错误吗。
np.logical_和
对两个数组逐元素执行
。你只传递了一个数组(因此产生了
ValueError
)。