0
0 комментариев

Коллеги, доброго времени суток!
Интересует следующее:
Я из БД получаю 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


Добавить комментарий