Вот моя проблема:
скажем, мои два массива:
import numpy as np
first = np.array(["hello", "hello", "hellllo"])
second = np.array(["hlo", "halo", "alle"])
Теперь я хочу получить матрицу расстояний между каждым элементом двух массивов
так, например, моя функция расстояния:
def diff_len(string1, string2):
return abs(len(string1) - len(string2))
Итак, я хотел бы получить матрицу:
hello hello hellllo
hlo result1 result2 result3
halo result4 result5 result6
alle result7 result8 result9
Итак, что я сделал, так это вычислил строку за строкой, используя функцию векторизации Numpy:
vectorize_dist = np.vectorize(diff_len)
first = np.array(["hello", "hello", "hellllo"])
second = np.array(["hlo", "halo", "alle"])
vectorize_dist(first , "hlo")
vectorize_dist(first , "halo")
vectorize_dist(first , "alle")
matrix = np.array([vectorize_dist(first , "hlo"), vectorize_dist(first , "halo"), vectorize_dist(first , "alle")])
matrix
array([[2, 2, 4],
[1, 1, 3],
[1, 1, 3]])
Но чтобы получить свою матрицу, мне нужно выполнить цикл для вычисления строки за строкой, а я хотел бы получить матрицу сразу. Действительно, мои два массива могут быть очень большими, и выполнение цикла может занять слишком много времени. также мне нужно вычислить несколько расстояний, поэтому мне придется выполнять процедуру несколько раз, что займет еще больше времени.