在scipy中调用pdist时,如何指定缺少的值?即这里描述的函数:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html
例如,如果您有:
pdist(X, "euclidean")但是X可能包含像字符串"NA"这样的缺失值,并且您希望在X的列之间的成对比较中排除这些值。我要寻找的行为是在获取X中任何一对列之间的欧几里得距离时不考虑缺失值。
发布于 2012-08-10 06:41:14
最好的方法是用要排除的点的np.nan填充X数组。例如,假设2D情况下有一个X a (10,2)数组:
import numpy as np
X = np.random.rand(10, 2)假设您想要从计算中排除X7:
X[7] = np.nan
my_dist = pdist(X, "euclidean")然后,您将看到,对于涉及使用排除的元素计算距离的对,my_dist具有'nan‘。可以排除多个图元。
一个更好的想法是使用numpy掩码数组,但pdist忽略掩码数组并使用数据。但是,一旦有了输出my_dist,就可以将其转换为掩码数组,这样can就不会妨碍以后的数组操作:
my_dist = np.ma.array(my_dist, mask = ~np.isfinite(my_dist))https://stackoverflow.com/questions/11892491
复制相似问题