ここに私の問題があります:
私は人の配列を定義し、この配列のエントリを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
が、私の簡単な心の中で、労働者が同じグローバル行列を操作するので、私は、どのように行うのか分からない。私は、forループ2でこれを行う方法を知っています私が読むのは良い考えではありません。
計算を高速化するにはどうすればよいですか?
ありがとうございます。
私はあなたの点を正確には知りません、申し訳ありません。 1つのスレッドは常に1つの列/行またはすべてのデータを変更する必要がありますか? – Mijago
あなたの私のループが何をしているのかはわかりません(おそらく、あなたのシミュレーションでは、図示していないコードでそれを使用しています)。しかし、私はあなたのすべてのループをnumpyで行うことができると思いますしかし、私は実際には(np.random.choiceがpython.random.sampleに似た仕事をする)とは考えていません。 – paddyg
行列全体が変更され、この手順を繰り返すまで行列を行ごとに編集したいと思います数回。 私が投稿しなかったのは、サンプル生成と平均化のための関数でした。前者はnp.random.choiceに対する引数であり、後者は行列全体が変更されるまで行ごとに編集するための引数です。 – Daniel