Проблемы с памятью при многократном использовании больших массивов в numpy - PullRequest
0 голосов
/ 11 января 2020

Я рассчитываю средневзвешенное расстояние между многомерными точками для большого количества наблюдений. Скажем, n = 2000 наблюдений, а размерность (число признаков) каждой точки d = 5000. Фактический код:

# A - the weights matrix (each row corresponds to a feature, each column corresponds to an observation)
# D - distance matrix between featires (all vs all)
AA = A[:, np.newaxis] * A[np.newaxis, :]
R = AA * D[:, :, np.newaxis]
S = R.sum(axis=(0, 1))

Таким образом, результирующий массив S представляет собой список из n чисел с плавающей запятой (размер в байтах: s = 8). Однако во время вычислений нам нужно выделить память для AA, которая равна n * d ^ 2 * s = огромное количество ...

Я не хочу использовать циклы, потому что эта процедура выполняется несколько раз ( ~ 400), поэтому любой код Python резко увеличит время выполнения.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...