1

pdist在 scipy 中调用时如何指定缺失值?即这里描述的功能:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html

例如,如果您有:

pdist(X, "euclidean")

X可能包含诸如字符串之类的缺失值,并且您希望在's 列之间的"NA"成对比较中排除这些值。X我正在寻找的行为是在获取任何一对列之间的欧几里德距离时不考虑缺失值X

4

1 回答 1

2

最好的方法是用 np.nan 填充 X 数组以排除要排除的点。例如,假设具有 X a (10,2) 数组的二维情况:

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))
于 2012-08-09T22:41:14.220 回答