【发布时间】:2019-11-26 14:51:02
【问题描述】:
我有 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。不幸的是,intersection/unique 或其他严格的方法对我不起作用。任何提示将不胜感激。
【问题讨论】:
-
np.unique确实有一个axis参数,所以你能详细说明为什么你不能使用它吗?另外我不明白为什么你有一个元组数组而不是一个二维数组(根据你显示的输出,你似乎有)。 -
因为我收到了
wall作为cv2.trackers.update的结果。我无法解决的问题是np.unique返回包含所有唯一元素的一维数组,而不是唯一的砖块。 -
请注意,每个数字中的点表示您的数组具有浮点数。如果您只有整数,请在创建数组时传递
dtype=int以获得整数数组。 -
这不是你想要的吗?如果您的数组是
dtype=object并且包含砖块作为任何对象,只要它们支持==,您就可以使用np.unique(a),它将为您提供一组独特的砖块对象。从您的问题看来,这就是您所要求的。如果没有,您能否使用可重现(即复制和粘贴)代码以及预期输出来更新您的问题。
标签: python numpy compare tuples unique