gpt4 book ai didi

python - 这可以向量化(numpy)吗?

转载 作者:行者123 更新时间:2023-12-01 01:14:25 25 4
gpt4 key购买 nike

我有一个特征向量列表,并且想计算特征向量与所有其他特征向量的 L2 距离,作为唯一性度量。这里,min_distances[i]给出了第i个特征向量的L2范数。

import numpy as np

# Generate data
nrows = 2000
feature_length = 128
feature_vecs = np.random.rand(nrows, feature_length)

# Calculate min L2 norm from each feature vector
# to all other feature vectors
min_distances = np.zeros(nrows)
indices = np.arange(nrows)
for i in indices:
min_distances[i] = np.min(np.linalg.norm(
feature_vecs[i != indices] - feature_vecs[i],
axis=1))

由于 O(n^2) 的复杂度,速度非常慢,因此需要对其进行优化。我可以摆脱 for 循环/向量化它,以便仅调用 minlinalg.norm 一次吗?

最佳答案

方法#1

这里有 cdist -

from scipy.spatial.distance import cdist,pdist,squareform

d = squareform(pdist(feature_vecs))
np.fill_diagonal(d,np.nan)
min_distances = np.nanmin(d,axis=0)

方法#2

另一个带有 cKDTree -

from scipy.spatial import cKDTree

min_distances = cKDTree(feature_vecs).query(feature_vecs, k=2)[0][:,1]

关于python - 这可以向量化(numpy)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54497416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com