【发布时间】:2017-02-02 13:53:07
【问题描述】:
我已经搜索了一些教程等来帮助解决这个问题,但似乎找不到任何东西。
我有两个 n 维 numpy 数组列表(某些图像的 3D 数组形式),我想检查每个列表中的重叠图像。让我们说列表 a 是训练集,列表 b 是验证集。
一种解决方案是使用嵌套循环并使用np.array(a[i], b[j]) 检查每对数组是否相等,但这很慢(每个列表中有大约 200,000 个 numpy 数组)并且坦率地说非常恶心。
我在想一种更优雅的实现方式是对每个列表中的每个 numpy 数组进行哈希处理,然后使用这些哈希表比较每个条目。
首先,这个解决方案是否正确,其次,我将如何实现这一目标?
下面是一些数据的示例。
train_dataset[:3]
array([[[-0.5 , -0.49607843, -0.5 , ..., -0.5 ,
-0.49215686, -0.5 ],
[-0.49607843, -0.47647059, -0.5 , ..., -0.5 ,
-0.47254902, -0.49607843],
[-0.49607843, -0.49607843, -0.5 , ..., -0.5 ,
-0.49607843, -0.49607843],
...,
[-0.49607843, -0.49215686, -0.5 , ..., -0.5 ,
-0.49215686, -0.49607843],
[-0.49607843, -0.47647059, -0.5 , ..., -0.5 ,
-0.47254902, -0.49607843],
[-0.5 , -0.49607843, -0.5 , ..., -0.5 ,
-0.49607843, -0.5 ]],
[[-0.5 , -0.5 , -0.5 , ..., 0.48823529,
0.5 , 0.1509804 ],
[-0.5 , -0.5 , -0.5 , ..., 0.48431373,
0.14705883, -0.32745099],
[-0.5 , -0.5 , -0.5 , ..., -0.32745099,
-0.5 , -0.49607843],
...,
[-0.5 , -0.44901961, 0.1509804 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.49607843, -0.49607843, -0.49215686, ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.49607843, -0.48823529, ..., -0.5 ,
-0.5 , -0.5 ]],
[[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.49607843, ..., -0.5 ,
-0.5 , -0.5 ],
...,
[-0.5 , -0.5 , -0.5 , ..., -0.48823529,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ],
[-0.5 , -0.5 , -0.5 , ..., -0.5 ,
-0.5 , -0.5 ]]], dtype=float32)
提前感谢您的帮助。
【问题讨论】:
-
向我们展示一下您对成对比较所做的工作。在这种情况下,我不知道您所说的
disgusting是什么意思。 -
查看最近的stackoverflow.com/questions/39674863/…。另请查看有关唯一行或已排序行的问题。
-
基本上我在尝试这个:
duplicates = [] for i in train_dataset: for j in valid_dataset: duplicates.append(np.equal(i,j)抱歉格式化,这些 cmets 很奇怪。 -
np.equal对浮点数的表现如何?通常我们推荐np.allclose在相互测试浮点数组时。 (或np.isclose) -
显然不是很好,因为我让它运行了大约 30 分钟,它还没有完成哈哈。我现在试试这两个选项。