【问题标题】:specifying missing values to pdist in scipy在 scipy 中为 pdist 指定缺失值
【发布时间】:2012-08-09 21:50:58
【问题描述】:

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

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

例如,如果您有:

pdist(X, "euclidean")

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

【问题讨论】:

    标签: python numpy matplotlib scipy


    【解决方案1】:

    最好的方法是用 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,就可以将其转换为掩码数组,这样 nan 就不会妨碍未来的数组操作:

    my_dist = np.ma.array(my_dist, mask = ~np.isfinite(my_dist))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2014-03-23
      • 2010-11-23
      • 2017-05-09
      • 2014-09-07
      • 2021-07-28
      • 1970-01-01
      相关资源
      最近更新 更多