Python: программа занимает большую память компьютера - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в python. Здесь я хочу вычислить центральный момент 2-го и 4-го порядка («stats.mstats.moment») случайной величины «_b» в 10 бинах. Поэтому я сначала сохранил данные в 2D-списке. Но если количество событий / итераций очень велико, то для этого требуется большой объем памяти компьютера. Есть ли способ, чтобы он занимал меньше компьютерной памяти и времени? Может кто-нибудь помочь, пожалуйста?

Вот мой код?

import sys
import numpy as np
from scipy import stats

max_event = 100000000
a_bin = 10  # number each bin from 0-->10 where cumulant calculation will be done

# Define 2D array for [ bin, here 0->10][proton in each bin]
pArray = [[] for nn in range(a_bin)]
neve = [0 for i in range(a_bin)]

for ii in range(0, max_event):

    _a = np.random.randint(10)
    _b = np.random.randint(120)

    if ii % 100000 == 0:
        print(ii, _a, _b)

    for j in range(0, a_bin):
        if _a == j:
            pArray[j].append(_b)
            neve[j] += 1

print("filling done!")

for k in range(0, a_bin):

    mu2 = stats.mstats.moment(pArray[k], moment=2)
    mu4 = stats.mstats.moment(pArray[k], moment=4)

    print('serial = %d, mu_2 = %f , mu_4 = %f, event = %d' %
          (k, mu2, mu4, neve[k]))
    # print k, neve[k], c1[k], c2[k], c3[k], c4[k], c5[k], c6[k]

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