首页 > 解决方案 > 如何在数组内部进行比较?

问题描述

我有这个数组:

array([[4798, 1369, 4139, ..., 2910, 2901,    0],
       [   2, 3161, 1343, ..., 2085, 2065, 2399],
       [ 546,  506,  614, ..., 1874, 1859, 4799],
       [   0,  634, 1341, ..., 1886, 1871, 4799]], dtype=int64)

我可以看到最后一行中有两个相等的数字(4799)。我想要的是创建一个比较相邻行并返回具有相等数字的数组或列表的函数。我不知道该怎么做。我尝试用 a 来做,for但是当我有一个最大的数组时,这种方法非常慢。

标签: pythonarraysnumpynumberscompare

解决方案


假设a是你的数组。然后尝试以下可能会有所帮助,

def equalnumbers(a):
    row,col = np.where((a[1:,:]-a[:-1,:]) ==0)
    return a[row,col]

试用示例:

请注意,我使用的数组有两个在相邻行中相等的数字。还有两次数字 0,但在不相邻的行中!

import numpy as np
a = np.array([[4798, 1369, 4139, 2910, 2901, 0],
             [4798, 3161, 1343, 2085, 2065, 2399],
             [546,  506,  614, 1874, 1859, 4799],
             [0,  634, 1341, 1886, 1871, 4799]]) 

equalnumbers(a)

输出:

array([4798, 4799])

该函数仅从相邻行返回相等的数字,而不是在非相邻行中存在的 0。希望有帮助。


推荐阅读