【问题标题】:Minkowski Distances between (A, B) and (C,)(A, B) 和 (C,) 之间的闵可夫斯基距离
【发布时间】:2019-04-03 14:32:26
【问题描述】:

我正在研究 Minkowski 距离,其定义如下:

我使用for循环来计算如下,

import numpy as np
import random
A = np.random.randint(5, size=(10, 5))
B = [1, 3, 5, 2, 4]
for i in range(10):
    dist = (sum((abs(A[i]-B))**5))**(1/5) # I set p=5 in this case
    print("Distances: ", dist)

有什么方法可以使用 numpy 技术避免这个循环?

【问题讨论】:

标签: python arrays python-3.x numpy


【解决方案1】:

你可以使用broadcasting:

import numpy as np
np.random.seed(42)

A = np.random.randint(5, size=(10, 5))
B = [1, 3, 5, 2, 4]


result = (np.abs(A - B)**5).sum(axis=1)**(1/5)
print(result)


for i in range(10):
    dist = (sum((abs(A[i]-B))**5))**(1/5) # I set p=5 in this case
    print("Distances: ", dist)

输出

[3.14564815 3.00246508 2.04767251 2.02439746 4.04953891 4.00312013
 2.49663093 3.49301675 3.53370523 2.04767251]
Distances:  3.1456481457393184
Distances:  3.0024650813881837
Distances:  2.0476725110792193
Distances:  2.024397458499885
Distances:  4.049538907295691
Distances:  4.003120128600393
Distances:  2.496630931732087
Distances:  3.4930167541811468
Distances:  3.5337052340491883
Distances:  2.0476725110792193

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多