Python 在具有公差的矩阵中查找数组 总结

Python 在具有公差的矩阵中查找数组 总结,python,Python,使用numpy,我试图在一个大小为N×3的矩阵中找到一个像素(表示为[r,g,b])的值;所以我想找到数组所在的行,但我想添加一个公差,因为它可能不完全匹配 使用np.all(参见下面的原始数据)可以执行此操作,但值应完全相同 result\u primo\u check=np.all(元素\u 2\u find==矩阵,轴=1) 例子 问题是我有元素\u 2\u find=[144,0256],但在矩阵中最相似的行是[148,0250]。是否有添加公差或类似内容的命令?只需计算像素与图像其余

使用
numpy
,我试图在一个大小为N×3的矩阵中找到一个像素(表示为
[r,g,b]
)的值;所以我想找到数组所在的行,但我想添加一个公差,因为它可能不完全匹配

使用
np.all
(参见下面的原始数据)可以执行此操作,但值应完全相同

result\u primo\u check=np.all(元素\u 2\u find==矩阵,轴=1)
例子
问题是我有
元素\u 2\u find=[144,0256]
,但在矩阵中最相似的行是
[148,0250]
。是否有添加公差或类似内容的命令?

只需计算像素与图像其余部分之间要使用的任何距离(如欧几里德距离),并选择最匹配的图像位置(可能仅当距离低于某个阈值时)

将numpy导入为np
img=np.rand.rand(100,3)
像素=np.random.rand(1,3)
距离=((img-像素)**2).sum(-1)
min_idx=np.unravel_索引(dists.argmin(),dists.shape)
最小距离=距离[min\u idx]
#img[min_idx]是图像中距离目标像素最近的像素
打印(最小idx、最小距离、img[最小idx])

这实际上是一个比你想象的要复杂得多的问题。没有可添加公差的标志或参数。然而,有办法解决这个问题。例如,您可以创建一个传递两个元组(两个RGB)和阈值的函数,如果tuple1-tuple2在所有3个维度上都小于阈值,则返回
True
。然后您可以执行类似于
np.all(my_几乎等于func(element_2_find,matrix,tol=5),axis=1)的操作
。嗯!