вот моя проблема:
Я хотел бы определить массив лиц и изменить записи этого массива в цикле for. Поскольку я также хотел бы видеть асимптотику полученного распределения, я хочу повторить эту симуляцию много, поэтому я использую матрицу для хранения нескольких массивов в каждой строке. Я знаю, как сделать это с помощью двух петель для:Python: редактировать строку матрицы параллельно
import random
import numpy as np
nobs = 100
rep = 10**2
steps = 10**2
dmoney = 1
state = np.matrix([[10] * nobs] * rep)
for i in range(steps):
for j in range(rep)
sample = random.sample(range(state.shape[1]),2)
state[j,sample[0]] = state[j,sample[0]] + dmoney
state[j,sample[1]] = state[j,sample[1]] - dmoney
Я думал, что я использую многопроцессорной библиотеку, но я не знаю, как это сделать, потому что в моем простом уме, рабочие манипулировать ту же глобальную матрицу в параллель, которую я читаю, не очень хорошая идея.
Итак, как я могу это сделать, чтобы ускорить вычисления?
Заранее спасибо.
Я не понимаю вашу точку зрения, извините. Должен ли один поток всегда изменять только один столбец/строку или все данные? – Mijago
Непонятно, что делает ваш цикл i, поскольку вы не ref i (предположительно, вы используете его в каком-то неподтвержденном коде, чтобы сделать с вашим симуляцией, calc calc.) Однако я думаю, что вы могли бы выполнить всю свою j-петлю в один numpy заявление. Но я действительно не думал, что через (np.random.choice выполняет аналогичную работу с python.random.sample) – paddyg
Я хотел бы отредактировать матрицу по строкам до тех пор, пока вся матрица не будет изменена и повторите этот шаг несколько раз. То, что я не публиковал, было функцией для генерации выборки и шага усреднения. Первый аргумент против np.random.choice и последний аргумент для редактирования строки за строкой, пока вся матрица не изменилась. – Daniel