Numpy Broadcast to perform euclidean distance vectorized

我有两个矩阵,分别是2 x 4和3 x 4的。我想计算每行的欧几里得距离,最终得到一个2 x 3的矩阵。以下是使用一个for循环的代码,用于计算矩阵a中每个行向量与矩阵b中所有行向量的欧几里得距离。我如何在不使用for循环的情况下实现同样的功能?

 import numpy as np
a = np.array([[1,1,1,1],[2,2,2,2]])
b = np.array([[1,2,3,4],[1,1,1,1],[1,2,1,9]])
dists = np.zeros((2, 3))
for i in range(2):
    dists[i] = np.sqrt(np.sum(np.square(a[i] - b), axis=1))

回答:

只需在适当的位置使用np.newaxis即可:

 np.sqrt((np.square(a[:,np.newaxis]-b).sum(axis=2)))

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注