Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 归一化:一个numpy数组和一个点之间的欧氏距离_Python_Numpy_Normalization - Fatal编程技术网

Python 归一化:一个numpy数组和一个点之间的欧氏距离

Python 归一化:一个numpy数组和一个点之间的欧氏距离,python,numpy,normalization,Python,Numpy,Normalization,我有一个numpy数组(68x2),对应于检测到的人脸的68个不同点 [16.0000 93.0000] [17.0000 116.0000] [20.0000 139.0000] [25.0000 162.0000] [33.0000 184.0000] [47.0000 205.0000] [66.0000 219.0000] ... until 68 这些点的原点位于图片的左下角。我想根据一个新的中心进行正常化。有两个问题,有没有一种不用循环的方法?根据新的起源,这是正常化的正确方法吗

我有一个numpy数组(68x2),对应于检测到的人脸的68个不同点

[16.0000 93.0000]
[17.0000 116.0000]
[20.0000 139.0000]
[25.0000 162.0000]
[33.0000 184.0000]
[47.0000 205.0000]
[66.0000 219.0000] ... until 68
这些点的原点位于图片的左下角。我想根据一个新的中心进行正常化。有两个问题,有没有一种不用循环的方法?根据新的起源,这是正常化的正确方法吗

new_origin = [112,135]
new_X
for point in X[0][0]:
    new_X.append(point-new_origin)

如果只想平移这些点,则只需将一个值减去左列(X值),将另一个值减去右列(Y值):

您可以直接使用:

或者只是:

>>> a - [112, 135]
array([[-112, -134],
       [-110, -132],
       [-108, -130],
       [-106, -128],
       [-104, -126]])

请注意,使用numpy时,您几乎不必手动迭代每个元素。

我认为“根据原点进行规范化”没有任何明确的含义,因此如果您希望我们验证您所做的是否正确,您需要更具体一些。当前代码所做的是表示原点位于
new\u origin
的转换坐标系的相同点。很可能这就是您想要的。关于避免循环,您应该能够简单地使用
new\u X=X-new\u origin
(假设
X
实际具有您声称的形状
(68,2)
,尽管您的代码建议不同)@SvenMarnach我正在对图像进行预处理,在那里我找到了68个描述脸部的点:鼻子、嘴巴、眼睛等,因为我对这些点的位置感兴趣(快乐的脸的点应该与悲伤的脸的点处于不同的位置)。所以我想指定一个新的原点(应该在鼻子附近),然后将所有其他点平移到此新轴。我希望这能澄清更多的情况。是的,这就是减去新原点坐标的作用。不过,还有很多其他变换可以应用于“标准化”,比如缩放、旋转或非线性变换。
>>> np.subtract(a, [112, 135])
array([[-112, -134],
       [-110, -132],
       [-108, -130],
       [-106, -128],
       [-104, -126]])
>>> a - [112, 135]
array([[-112, -134],
       [-110, -132],
       [-108, -130],
       [-106, -128],
       [-104, -126]])