我有一堆4D点,我想要从线w = x = y = z获得它们的垂直距离(假设w,x,y,z为4D轴)。似乎在python中应该有一个简单的方法来做到这一点,但我似乎无法弄明白。
除此之外:这基本上是一个4D散点图,我试图看看每个点与理想情景的距离(w = x = y = z)。这个指标有数学术语吗?
答案 0 :(得分:1)
任何直线都有参数方程,带有一些基点和单位方向矢量。这里P0=(0,0,0,0)
和u=(1/2, 1/2, 1/2, 1/2)
从基点到每个点的矢量P等于它们的坐标,从P到线的距离是:
D = (P - (P.dot.u) * u).length
标量产品方法适用于任何维度。
答案 1 :(得分:0)
这是欧几里德距离的实现,适用于任意数量的维度
def distance_to_line(line, pts, l0=None, p0=None):
"""
line defined between l0 and line
points defined between p0 and pts
"""
# line origin other than (0,0,0,..)
if l0 is not None:
line = line-l0
# points origin other than (0,0,0,..)
if p0 is not None:
pts = pts-p0
dp = np.dot(pts,line)
pp = dp/np.linalg.norm(line)
pn = np.linalg.norm(pts, axis=1)
return np.sqrt(pn**2 - pp**2)
distance_to_line(l0=np.transpose((0,0,0,0,0)),
line=np.transpose((1,1,0,0,0)),
pts=np.array([(2,0,0,0,1),
(1,1,0,0,1),
(0,1,0,0,1),
(1,2,0,0,1)]))
>>> array([ 1.73205081, 1. , 1.22474487, 1.22474487])