在二维数组中查找角值
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。真正的欧几里德距离也会取平方和的平方根,但由于我们只是寻找最小的,所以我们不需要采取这一步。
我在 ((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。真正的欧几里德距离也会取平方和的平方根,但由于我们只是寻找最小的,所以我们不需要采取这一步。