Обычный способ сопоставления функции в numpy.narray
как np.array[map(some_func,x)]
или vectorize(f)(x)
не может предоставить индекс.
Следующий код - это простой пример, который обычно встречается во многих приложениях.
dis_mat = np.zeros([feature_mat.shape[0], feature_mat.shape[0]])
for i in range(feature_mat.shape[0]):
for j in range(i, feature_mat.shape[0]):
dis_mat[i, j] = np.linalg.norm(
feature_mat[i, :] - feature_mat[j, :]
)
dis_mat[j, i] = dis_mat[i, j]
Есть ли способ ускорить его?
Спасибо за помощь! Самый быстрый способ ускорить этот код - это использование функции, которая @user2357112 прокомментировала:
from scipy.spatial.distance import pdist,squareform
dis_mat = squareform(pdist(feature_mat))
@Julien также хорош, если feature_mat
невелик, но когда feature_mat
составляет 1000 к 2000 году, тогда ему требуется около 40 ГБ памяти.