Как сделать расчеты в пакетном режиме на массиве - PullRequest
0 голосов
/ 26 июня 2018

Я хочу создать цикл for для задачи расчета, поскольку данные слишком велики для одного вычисления, и я всегда получаю новые данные, которые я хочу разделить в процессе расчета.

Мой массив a имеет длину n

Я хочу использовать x первые элементы для вычисления (c=b*x), а затем следующие x элементы массива. так что в общей сложности n/x раз рассчитать. В конце я хочу собрать / добавить все мои c-массивы в один массив ctotal.

так для примера:

a=np.random.rand(70000000)
ctotal=[]
x=7000
for i in range():
    c=model.predict(#each7000 elements of a)
    ctotal=ctotal.append(append with c)
    #calculate something with 20 first elements of a and return new 
    #array c, rand append to ctotal, repeat with new 20 elements  

1 Ответ

0 голосов
/ 26 июня 2018

Обработка массива в чанах не "разбивает процесс вычисления", потому что они будут выполняться последовательно. Если вы хотите выполнить несколько вычислений одновременно, вы должны проверить библиотеку threading . Что, даже если это не главное в вашем вопросе, может показаться, что это может помочь вам с 10 миллионами элементов (?) Пройти и обработать.

Если ваш вопрос состоит только в том, как получить 20 одновременно, есть несколько способов сделать это. Одним из них является создание генератора:

def chunkify(input_list, chunk):
    start = 0
    while input_list[start:start+chunk]:
        yield input_list[start:start+chunk]
        start = start + chunk

Затем вы можете запустить for i in chunkify(your_list, 20), и в каждом цикле i будет следующими 20 элементами вашего списка.

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