在二维数组中查找角值

FInd a corner values in 2D array

我在 ((0,1), (0,1)) 域内有一个随机分布的点。 我需要找到角值。 (沿 0 轴的最小值,沿 1 轴的最小值) (沿 0 轴最大值,沿 1 轴最小值) (沿 0 轴最大,沿 1 轴最大) (最小值沿 0 轴,最大值沿 1 轴) 问题在于沿 2 个轴同时搜索 min/max 值。 如何在numpy中实现这种同时查找?

import numpy as np    
np.random.seed(42)
points = np.random.random((100,2))   

您可以使用欧氏距离找到最近点。这等效于找到从角到该点的向量的长度。对于 (0,0) 这是微不足道的:

points[np.argmin(np.sum(np.square(points), axis=1)), :]

对于其他角,您需要先找到它们之间的向量,例如(0,1):

points[np.argmin(np.sum(np.square(points - [0, 1]), axis=1)), :]

这一行所做的是首先计算向量 points - [0, 1] 然后计算向量中两个值的平方。然后它对每一行求和,使用 np.argmin 找到最小值的参数或索引,并将其用于 re-index 原始点数组以提取点 co-ords.

N.B。真正的欧几里德距离也会取平方和的平方根,但由于我们只是寻找最小的,所以我们不需要采取这一步。