ValueError: Expected 2D array, got 1D array instead , euclidean distance

Posted

技术标签:

【中文标题】ValueError: 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.

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于ValueError: Expected 2D array, got 1D array instead , euclidean distance的主要内容,如果未能解决你的问题,请参考以下文章

ValueError: Expected 2D array, got 1D array instead:

ValueError: Expected 2D array, got 1D array instead:

如何在 sklearn/python 中修复“ValueError: Expected 2D array, got 1D array”?

ValueError: Expected 2D array, got 1D array instead , euclidean distance

sklearn中报错ValueError: Expected 2D array, got 1D array instead:

添加层到 resnet[keras] 的顶部:ValueError: Input 0 is incompatible with layer conv2d_transpose_1: expected n