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
)。