到目前为止,这是我所拥有的:
Stats2003 = np.loadtxt('/DataFiles/2003.txt')
Stats2004 = np.loadtxt('/DataFiles/2004.txt')
Stats2005 = np.loadtxt('/DataFiles/2005.txt')
Stats2006 = np.loadtxt('/DataFiles/2006.txt')
Stats2007 = np.loadtxt('/DataFiles/2007.txt')
Stats2008 = np.loadtxt('/DataFiles/2008.txt')
Stats2009 = np.loadtxt('/DataFiles/2009.txt')
Stats2010 = np.loadtxt('/DataFiles/2010.txt')
Stats2011 = np.loadtxt('/DataFiles/2011.txt')
Stats2012 = np.loadtxt('/DataFiles/2012.txt')
Stats = Stats2003, Stats2004, Stats2004, Stats2005, Stats2006, Stats2007, Stats2008, Stats2009, Stats2010, Stats2011, Stats2012
我正在尝试计算每个其他数组之间的欧几里得距离,但这样做很难.
通过计算距离,我得到了想要的输出:
dist1 = np.linalg.norm(Stats2003-Stats2004)
dist2 = np.linalg.norm(Stats2003-Stats2005)
dist11 = np.linalg.norm(Stats2004-Stats2005)
等,但我想用循环进行这些计算.
我正在使用Prettytable将计算结果显示到表中.
谁能指出我正确的方向?我以前没有找到任何可行的解决方案.
解决方法:
看scipy.spatial.distance.cdist
.
从文档中:
Computes distance between each pair of the two collections of inputs.
因此,您可以执行以下操作:
import numpy as np
from scipy.spatial.distance import cdist
# start year to stop year
years = range(2003,2013)
# this will yield an n_years X n_features array
features = np.array([np.loadtxt('/Datafiles/%s.txt' % year) for year in years])
# compute the euclidean distance from each year to every other year
distance_matrix = cdist(features,features,metric = 'euclidean')
如果您知道开始的年份,而且任何年份都没有丢失数据,那么很容易确定要在距离矩阵中的坐标(m,n)上比较哪两年.