在scipy中调用pdist
时如何指定缺失值?即这里描述的功能:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html
例如,如果你有:
pdist(X, "euclidean")
但X
可能包含字符串"NA"
等缺失值,您希望在X
列之间的成对比较中排除这些值。我正在寻找的行为是在X
中获取任何一对列之间的欧氏距离时不考虑缺失值。
答案 0 :(得分:1)
最好的方法是用np.nan填充你的X数组,以排除要点。例如,假设具有X a(10,2)数组的2D情况:
import numpy as np
X = np.random.rand(10, 2)
假设您要从计算中排除X [7]:
X[7] = np.nan
my_dist = pdist(X, "euclidean")
然后,你会看到my_dist对于涉及计算与被排除元素的距离的对有'nan'。您可以排除多个元素。
更好的想法是使用numpy蒙版数组,但是pdist忽略了蒙版数组并且仍然使用数据。但是,一旦输出my_dist,就可以将它转换为一个屏蔽数组,这样nans就不会妨碍未来的数组操作:
my_dist = np.ma.array(my_dist, mask = ~np.isfinite(my_dist))