【问题标题】:ValueError: Expected 2D array, got 1D array instead , euclidean distanceValueError: Expected 2D array, got 1D array instead , euclidean distance
【发布时间】:2021-11-01 03:28:54
【问题描述】:

我收到了(150, 4)(4,) 如何计算欧式距离

from sklearn.metrics.pairwise import euclidean_distances
center_distances = np.array(euclidean_distances(X, middle_point))

我得到了这个错误

ValueError: Expected 2D array, got 1D array instead:
array=[5.84333333 3.05733333 3.758      1.19933333].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or 
array.reshape(1, -1) if it contains a single sample.

【问题讨论】:

    标签: numpy scikit-learn euclidean-distance


    【解决方案1】:

    您需要将middle_point 广播成X 的形状。您可以通过在第一个轴上扩展一个维度来做到这一点。你可以这样做:

    • np.expand_dims:

      >>> np.expand_dims(middle_point, 1)`)
      
    • 使用切片技巧和None(相当于np.newaxis):

      >>> middle_point[None]
      

    这允许将middle_point 广播到形状为(1, 4) 的数组。

    因此,您会得到一个数组,其中包含 X 中的每个 150 个点与 middle_point 中的唯一点之间的距离:

    >>> euclidean_distances(X, middle_point[None])
    # shape (150, 1)
    

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 2021-07-28
      • 2018-12-23
      • 2020-10-10
      • 2020-11-22
      • 2020-12-05
      • 2018-08-25
      • 2020-07-25
      • 2022-11-29
      相关资源
      最近更新 更多