gpt4 book ai didi

python - *更新* 为两个二维数组之间的距离创建一个数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:56 24 4
gpt4 key购买 nike

所以我有两个具有 x、y、z 坐标的数组。我只是想应用 3D 距离公式。问题是,我找不到一个构成每列有多个值的数组并吐出一个数组的帖子。

print MW_FirstsubPos1 

[[ 51618.7265625 106197.7578125 69647.6484375 ]
[ 33864.1953125 11757.29882812 11849.90332031]
[ 12750.09863281 58954.91015625 38067.0859375 ]
...,
[ 99002.6640625 96021.0546875 18798.44726562]
[ 27180.83984375 74350.421875 78075.78125 ]
[ 19297.88476562 82161.140625 1204.53503418]]

print MW_SecondsubPos1

[[ 51850.9140625 106004.0078125 69536.5234375 ]
[ 33989.9375 11847.11425781 12255.80859375]
[ 12526.203125 58372.3046875 37641.34765625]
...,
[ 98823.2734375 95837.1796875 18758.7734375 ]
[ 27047.19140625 74242.859375 78166.703125 ]
[ 19353.97851562 82375.8515625 1147.07556152]]

是的,它们是相同的形状。

我的尝试,

import numpy as np

xs1,ys1,zs1 = zip(*MW_FirstsubPos1)
xs11,ys11,zs11 = zip(*MW_SecondsubPos1)

squared_dist1 = (xs11 - xs1)**2 + (ys11 - ys1)**2 + (zs11 - zs1)**2
dist1 = np.sqrt(squared_dist1)

print dist1

返回:

TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'

我只想返回一个相同形状的一维数组。

* -------------------- 更新 -------------------- *

使用 Sнаđошƒаӽ 所说的,

Distance1 = []
for Fir1, Sec1 in zip(MW_FirstsubVel1, MW_SecondsubPos1):
dist1 = 0
for i in range(3):
dist1 += (Fir1[i]-Sec1[i])**2
Distance1.append(dist1**0.5)

但是在我的原始帖子中比较一个元素的距离公式时,例如,

squared_dist1 = (xs11[0] - xs1[0])**2 + (ys11[0] - ys1[0])**2 + (zs11[0] - zs1[0])**2
dist1 = np.sqrt(squared_dist1)

print dist1

返回 322.178309762

同时

result = []
for a, b in zip(MW_FirstsubVel1, MW_SecondsubPos1):
dist = 0
for i in range(3):
dist += (a[i]-b[i])**2
result.append(dist**0.5)

print result[0]

返回 137163.203004

这里有什么问题吗?

最佳答案

我觉得你的解决方案不错。一个更好的主意是使用 scipy 包中的线性代数模块,因为它可以使用多维数据进行缩放。这是我的代码。

import scipy.linalg as LA

dist1 = LA.norm(MW_FirstsubPos1 - MW_SecondsubPos1, axis=1)

关于python - *更新* 为两个二维数组之间的距离创建一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com