两个numpy ndarrays的字典序比较

5

我在比较两个(在我的情况下是多维的)数组时,找不到一种简单直接的按字典序比较的方法。

例如:

a = [1,2,3,4]
b = [4,0,1,6]

对于 a < b,我想获得true,其中我得到了[true,false,false,true]
对于a > b,我想获得false,其中我得到了[false,true,true,false]


1
顺便说一下,ndarray.sort不按字典顺序排序。 - user2357112
@MosesKoledoye:它们是数组,不是列表。虽然我们可以构建列表,但如果没有必要,那将是一种相当昂贵的转换。 - user2357112
我想我要为此编写自己的函数。不应该很难。 - Adam Toth
你能否添加一个多维数组的案例并提供期望的输出?另外,如果你已经实现了什么东西,如果它解决了你的问题,请将其添加到问题或帖子中作为答案。 - Divakar
显示剩余8条评论
2个回答

5
如果问题只是要找出 a 是否小于或大于 b,那么以下内容可以起作用。
def fn(a, b):
    # finds index of the first non matching element
    idx = np.where( (a>b) != (a<b) )[0][0]

    if a[idx] < b[idx]: print "a < b" 
    if a[idx] > b[idx]: print "a > b" 

我编辑了你的答案,删除了 == True,因为它是暗示的(而且运行缓慢),并将 ^ 拼写为 != 以增加清晰度。 - Eric
1
你是不是用(a>b) != (a<b)代替a!=b来处理nan呢? - Eric

0
用 np.arange(4)[::-1] ** 2 进行乘法,然后在该轴上求和。

请您提供一个例子,好吗? - AkiRoss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接