对于 python 中的整个数据集,是否有一种简单的方法来计算 3D space 中两点的距离?
Is there a simple way to calculate the distance of two points in 3D space for a whole Data Set in python?
我是 python 的新手,我想快速创建一个包含两个坐标(它们的 x、y、z 值)及其彼此距离的 table。
数据集是这样的
data = np.random.randint(5,30,size=(10,6))
df = pd.DataFrame(data, columns=['x1', 'y1', 'z1', 'x2', 'y2', 'z2'])
print(df)
对于距离列,我想应用一个简单的函数,例如
def distance(x1, y1, z1, x2, y2, z2):
d = math.sqrt(math.pow(x2 - x1, 2) +
math.pow(y2 - y1, 2) +
math.pow(z2 - z1, 2)* 1.0)
return d
我也尝试过使用数组(a 和 b)作为输入,但我还不明白如何将数组作为函数中的变量,例如
p1 = a
p2 = b
squared_dist = np.sum((p1-p2)**2, axis=0)
dist_ab = np.sqrt(squared_dist)
print(dist_ab)
你们将如何完成这项任务?
我希望这很容易理解,因为我想我在最后几个小时里迷路了并且发疯了 :D
像这样:
df['distance'] = df.apply(lambda r: distance(r[0], r[1], r[2], r[3], r[4], r[5]), axis=1)
我是 python 的新手,我想快速创建一个包含两个坐标(它们的 x、y、z 值)及其彼此距离的 table。
数据集是这样的
data = np.random.randint(5,30,size=(10,6))
df = pd.DataFrame(data, columns=['x1', 'y1', 'z1', 'x2', 'y2', 'z2'])
print(df)
对于距离列,我想应用一个简单的函数,例如
def distance(x1, y1, z1, x2, y2, z2):
d = math.sqrt(math.pow(x2 - x1, 2) +
math.pow(y2 - y1, 2) +
math.pow(z2 - z1, 2)* 1.0)
return d
我也尝试过使用数组(a 和 b)作为输入,但我还不明白如何将数组作为函数中的变量,例如
p1 = a
p2 = b
squared_dist = np.sum((p1-p2)**2, axis=0)
dist_ab = np.sqrt(squared_dist)
print(dist_ab)
你们将如何完成这项任务? 我希望这很容易理解,因为我想我在最后几个小时里迷路了并且发疯了 :D
像这样:
df['distance'] = df.apply(lambda r: distance(r[0], r[1], r[2], r[3], r[4], r[5]), axis=1)