我有一个包含n个数据点的TSV文件,我想计算所有点之间的距离。我有这样的东西:
我想到的是.iloc
功能
import pandas as pd
x = pd.read_csv('data.tsv', sep='\t')
print (x)
while True: xcord= (int)
我在想,您可以在每个点上加1的方式进行迭代,但是我不知道该怎么做。
答案 0 :(得分:2)
P = net.forward(x)
p = torch.nn.functional.softmax(P, dim=1)
loss = torch.nn.functional.cross_entropy(P, y)
您可以继续使用scipy.spatial.distance_matrix
。
假设您的DataFrame为distance_matrix
。
my_dataframe
我们可以使用seabord.heatmap
可视化获得的结果:
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)
结果是:
我们可以创建一个小的文本示例,以帮助您逐步了解输入和输出。让我们考虑一个只有两点的DataFrame:
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")
我们生成的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"])
所以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)
使用与上面相同的代码,我们获得: