gpt4 book ai didi

python - 计算 TSV 文件中所有其他点之间的距离?

转载 作者:行者123 更新时间:2023-12-01 01:46:22 26 4
gpt4 key购买 nike

我有一个充满 n 个数据点的 TSV 文件,我想计算所有点之间的距离。我有这样的东西:

TSV example

我想做的是 .iloc 功能

import pandas as pd
x = pd.read_csv('data.tsv', sep='\t')
print (x)

while True: xcord= (int)

我想你可以迭代地为每个点加 1,但我不知道该怎么做。

最佳答案

使用distance_matrix的解决方案

您可以继续使用 scipy.spatial.distance_matrix .

假设您的 DataFrame 是 my_dataframe

import pandas as pd
import scipy as sp

points = pd.DataFrame(my_dataframe, columns=["X", "Y", "Z"]).astype(float)
distance_matrix = sp.spatial.distance_matrix(points, points)

可视化结果

我们可以使用seabord.heatmap可视化获得的结果:

from matplotlib import pyplot as plt
import seaborn as sns

labels = my_dataframe["points"]

plt.rcParams['figure.figsize'] = [10, 10]
plt.axis('scaled')
sns.heatmap(distance_matrix,
annot=True,
cbar = False,
fmt="0.2f",
cmap="YlGnBu",
xticklabels=labels,
yticklabels=labels)
plt.title("Distance matrix")

结果是:

enter image description here

一个小文本示例

我们可以创建一个小文本示例,通过它可以帮助我们逐步理解输入和输出。让我们考虑一个只有两点的 DataFrame:

生成示例数据帧

import pandas as pd
import numpy as np

a = np.random.uniform(100, size=(2, 3))
my_dataframe = pd.DataFrame(np.hstack([[["A"], ["B"]], a]), columns=["points", "X", "Y", "Z"])

我们生成的 DataFrame 如下所示:

Example DataFrame

分割点和标签

我们拆分标签和点:

points = pd.DataFrame(my_dataframe, columns=["X", "Y", "Z"]).astype(float)
labels = my_dataframe["points"]

所以看起来像:

Points

并且标签看起来像:

Labels

计算距离矩阵

现在我们可以继续计算距离矩阵,执行scipy.spatial.distance_matrix:

distance_matrix = sp.spatial.distance_matrix(points, points)    

结果矩阵为:

array([[ 0.        , 93.43955419],
[93.43955419, 0. ]])

可视化获得的矩阵

使用与上面相同的代码,我们得到:

Small distance matrix

关于python - 计算 TSV 文件中所有其他点之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51291018/

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