@PyTuch

Как ускорить np.dot()?

Коллеги, доброго времени суток!
Интересует следующее:
Я из БД получаю df размером 10 млн строк на n столбцов;
Дальше выбираю из этого df один столбец;
Делаю его копию состоящую из обратных значений;
Полученную копию делаю строкой;
Дальше умножаю матричным способом через np.dot()столбец на сформированную строку.
------------------------------------------------------------------------------------------------------------------
Chunk - первый способ ускорения, чтобы умножать по частям - матрицами размером chunk_size на 10 млн
Есть еще варианты как это можно было бы ускорить? Возможно есть какое то оптимальное значение параметра chunk?
chunk_size = 25

df_values = DF.to_numpy()
v = df_values[:, criteria_number - 1:criteria_number]
length = v.shape[0]

kolvo_shagov = int(length / chunk_size) + int(
(length % chunk_size) / ((length % chunk_size - 1)))

b = 1 / v

if vector is None:
vector = np.zeros([v.shape[0], 1])
i = -1
for shag in range(kolvo_shagov):
i += 1
matrix = v[chunk_size * i:chunk_size * (i + 1), :].dot(b.T)
gm = stats.gmean((matrix), axis=1)
gm = gm.reshape([len(gm), 1])
vector[chunk_size * i:chunk_size * (i + 1)] = gm

vector_sum = vector.sum()
vector = vector / vector_sum
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@U235U235
Простите, но если умножить вектор на транспонированый вектор обратных значений разве результатом не будет N - число элементов в векторе?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы