恢复这个问题:用缺失值计算 scipy 中的成对距离
测试用例:我想计算将不同长度的系列的成对距离组合在一起,我必须以最有效的方式进行(使用欧几里得距离)。
使其工作的一种方法可能是:
import pandas as pd
import numpy as np
from scipy.spatial.distance import pdist
a = pd.DataFrame(np.random.rand(10, 4), columns=['a','b','c','d'])
a.loc[0, 'a'] = np.nan
a.loc[1, 'a'] = np.nan
a.loc[0, 'c'] = np.nan
a.loc[1, 'c'] = np.nan
def dropna_on_the_fly(x, y):
return np.sqrt(np.nansum(((x-y)**2)))
pdist(starting_set, dropna_on_the_fly)
但我觉得这可能非常低效,因为pdist
函数的内置方法在内部进行了优化,而函数只是被传递了。
我有一种预感,我会在numpy
其中broadcast
进行减法运算,然后继续np.nansum
进行na
抗性总和,但我不确定如何进行。