gpt4 book ai didi

python - 如何在不使用循环的情况下使用自己的度量创建距离矩阵?

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

我有一个这样的 np.arrray:

[[ 1.3 , 2.7 , 0.5 , NaN , NaN],
[ 2.0 , 8.9 , 2.5 , 5.6 , 3.5],
[ 0.6 , 3.4 , 9.5 , 7.4 , NaN]]
还有一个函数来计算两行之间的距离:
def nan_manhattan(X, Y):
nan_diff = np.absolute(X - Y)
length = nan_diff.size
return np.nansum(nan_diff) * length / (length - np.isnan(nan_diff).sum())
我需要所有成对距离,而且我不想使用循环。我怎么做?

最佳答案

使用 pdist :

import numpy as np
from scipy.spatial.distance import pdist, squareform


def nan_manhattan(X, Y):
nan_diff = np.absolute(X - Y)
length = nan_diff.size
return np.nansum(nan_diff) * length / (length - np.isnan(nan_diff).sum())


arr = np.array([[1.3, 2.7, 0.5, np.nan, np.nan],
[2.0, 8.9, 2.5, 5.6, 3.5],
[0.6, 3.4, 9.5, 7.4, np.nan]])

result = squareform(pdist(arr, nan_manhattan))

print(result)
输出
[[ 0.         14.83333333 17.33333333]
[14.83333333 0. 19.625 ]
[17.33333333 19.625 0. ]]

关于python - 如何在不使用循环的情况下使用自己的度量创建距离矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64676672/

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