我想逐行比较两个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
的新手。请帮忙。
答案 0 :(得分:4)
我认为你想要的东西类似于:
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]])
但0
代表:
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 3], [5, 6]])
答案 1 :(得分:2)
只是为了扩展@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_and(),如果查看文档,则需要输入两个变量x1和x2(https://github.com/jfeldstein/jQuery.AjaxFileUpload.js)。
因此,如果你传入上面的数组,你会得到以下结果:
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
这是因为np.array([[True,False],[False,True]])是一个单独的数组,即你只提供了一个x1值,并且没有给出x2值。这就是回溯告诉你'参数数量无效'的原因。您需要为此函数提供两个值。
@ zero323正确地给了你一个解决方案,就是将值解包到函数中。更具体地说,将第一个数组值[True,False]传递给x1,将[False,False]传递给x2:
>>> np.logical_and(*np.equal(a, b))
array([False, False], dtype=bool)
答案 2 :(得分:0)
这样的事情:
getToken() {
return this.LoginResponse.token;
}