我有一个元组数组,我需要从该数组中找到元组,即给定元组的闭合(元素方面),即根据这两个元组中每个元素之间的绝对值差.元组数组如下所示:

array_of_tuples = [(0.0, 6.5, 1),
     (0.0, 6.5, 4.5),
     (0.0, 6.5, 8.0),
     (0.0, 13.5, 1),
     (0.0, 13.5, 4.5),
     (0.0, 13.5, 8.0),
     (0.0, 21.0, 1),
     (0.0, 21.0, 4.5),
     (0.0, 21.0, 8.0),
     (7.0, 6.5, 1),
     (7.0, 6.5, 4.5),
     (13.5, 21.0, 8.0)]
 
 

而查询元组为(13.1, 20.3, 8.4)

然而,做:np.argmin(np.abs(array_of_tuples - (13.1, 20.3, 8.4)))

给出8,而如果我不使用np.argmin()打印结果,我清楚地看到它是数组中的最后一个元素,与给定的元组差别最小.

推荐答案

您必须考虑所有坐标并将它们聚合为一个single数字(每行).

计算平方和并得到其(Arg)min:

np.argmin(((array_of_tuples - (13.1, 20.3, 8.4))**2).sum(axis=1))

输出:11

argmin年前的中级:

array([416.81, 377.26, 362.21, 272.61, 233.06, 218.01, 226.86, 187.31,
       172.26, 282.41, 242.86,   0.81])

根据@MadPhysicist的建议,您也可以使用numpy.linalg.norm来计算每行的norm:

np.argmin(np.linalg.norm(array_of_tuples-(13.1, 20.3, 8.4), axis=1))

Python-3.x相关问答推荐

Python3和请求-超文本标记语言:试图抓取一个网站-没有取回真正的超文本标记语言代码

如何通过Pandas为不同的列集垂直设置列数据?

如何将多个字典合并到一个列中,并为不同的行使用相同的键

链接列未延伸到数据框的末尾

Python根据条件从多行读取值

SQL Server 2022和Python3.10脚本错误

如何立即从asyncio.Task获取异常?

将自动文本转换为 DataFrame

如何键入提示函数,在 Python 中通过类decorator 添加到类中

通过匹配第一列的行值,逐个单元格地添加两个Pandas 数据框中的浮点数

通过最接近的匹配合并两个不同长度的列上的两个数据框

python 3集合中的Discard()和Remove()函数有什么区别

日志(log)模块不适用于 Python3

multiprocessing.Queue 中的 ctx 参数

是否有与 Laravel 4 等效的 python?

使用 Python3 与 HDFS 交互的最佳模块是什么?

如何获得 BeautifulSoup 标签的所有直接子代?

如何创建一个永远在其上运行滚动协程的事件循环?

Python,Docker - ascii编解码器无法编码字符

如何从Pandas 中的字符串中提取前8个字符