Python 元组的两个numpy数组之间的差异

Python 元组的两个numpy数组之间的差异,python,numpy,compare,tuples,unique,Python,Numpy,Compare,Tuples,Unique,我得到了numpy ndarraywall,它由元组brick=(x,y,w,h)组成 看起来像 [[317. 276. 17. 12.] [317. 276. 17. 12.] [317. 276. 17. 12.] [248. 276. 25. 17.] [320. 274. 18. 13.] [353. 273. 15. 11.] [377. 272. 17. 11.] [ 0. 271. 61. 71.] [ 21. 266. 75. 49.] [2

我得到了numpy ndarray
wall
,它由元组
brick=(x,y,w,h)
组成

看起来像

[[317. 276.  17.  12.]
[317. 276.  17.  12.]
[317. 276.  17.  12.]
[248. 276.  25.  17.]
[320. 274.  18.  13.]
[353. 273.  15.  11.]
[377. 272.  17.  11.]
[  0. 271.  61.  71.]
[ 21. 266.  75.  49.]
[228. 280.  20.  14.]
[306. 245.  15.  20.]
[519. 239.  18.  18.]
[482. 252.  22.  10.]]

我想消除相同的,正如你所看到的,前三个是相同的。在那之后,每次新的迭代(相机回调-帧接收)我都会得到新的
wall
。我想把这个和旧的比较一下,找出区别,基本上找到所有不同的
brick
。不幸的是,交叉/独特或其他严格的方法对我不起作用。如有任何提示,将不胜感激

熊猫是这方面的一个很好的图书馆。也许不是最有效的方法,但它可以完成任务

import pandas as pd

tmp = [
    [317, 276,  17,  12.],
    [317, 276,  17,  12.],
    [317, 276,  17,  12.],
    [248, 276,  25,  17.],
    [320, 274,  18,  13.],
    [353, 273,  15,  11.],
    [377, 272,  17,  11.],
    [  0, 271,  61,  71.],
    [ 21, 266,  75,  49.],
    [228, 280,  20,  14.],
    [306, 245,  15,  20.],
    [519, 239,  18,  18.],
    [482, 252,  22,  10.]
]

df = pd.DataFrame(tmp).drop_duplicates()
输出为:

    0   1   2   3
0   317 276 17  12.0
3   248 276 25  17.0
4   320 274 18  13.0
5   353 273 15  11.0
6   377 272 17  11.0
7   0   271 61  71.0
8   21  266 75  49.0
9   228 280 20  14.0
10  306 245 15  20.0
11  519 239 18  18.0
12  482 252 22  10.0

从您的问题和评论中可以看出,您希望删除沿第一个轴的唯一元素。您可以通过指定轴=0来执行此操作:

np.unique(wall, axis=0)

如果
wall.dtype是object
并存储某种
brick
对象,只要它们支持相等性检查
=
\uuuuuueq\uuuu
),您就可以使用
np。unique(a)

有一个
参数,那么您能详细说明为什么不能使用它吗?我也不明白为什么你有一个元组数组而不是2D数组(根据你显示的输出,你似乎有)。因为我收到
cv2.trackers.update的
wall
。我无法解决的问题是
np.unique
返回包含所有唯一元素的1D数组,而不是唯一的块。请注意,每个数字中的点表示数组中有浮点数。如果您只有整数,那么在创建数组时传递
dtype=int
以获得整数数组。这不是您想要的吗?如果您的数组是
dtype=object
并且包含作为任意对象的砖块,只要它们支持
=
,您就可以使用
np.unique(a)
,它将为您提供一个唯一砖块对象的数组。从你的问题来看,这似乎是你的要求。如果没有,请用可复制(即可复制和粘贴)的代码以及预期输出更新您的问题。这似乎是合法的,将尝试这种方式。这与使用
np.unique(a,axis=0)
有何不同?Pandas将保持行的组织,而numpy不会。如果这不是问题,那么numpy方法可能确实更好。实际上,在测试之后
np.unique(a,axis=0)
最适合我。非常感谢,伙计们。