次のpythonコードがあります:
H1 = [[0.04,0.03,0.01,0.002],[0.02,0.04,0.001,0.5]]
H2 = [[0.06,0.02,0.02,0.004],[0.8,0.09,0.6,0.1]]
D1 = [0.01,0.02,0.1,0.01]
D2 = [0.1,0.3,0.01,0.4]
Tp = np.sum(D1)
Tn = np.sum(D2)
T = []
append2 = T.append
E = []
append3 = E.append
for h1,h2 in itertools.izip(H1,H2)
Err = []
append1 = Err.append
for v in h1:
L1 = [1 if i>=v else 0 for i in h1]
L2 = [1 if i>=v else 0 for i in h2]
Sp = np.dot(D1,L1)
Sn = np.dot(D2,L2)
err = min(Sp+Tn-Sn, Sn+Tp-Sp)
append1(err)
b = np.argmin(Err)
append2(h1[b])
append3(Err[b])
これは単なるコード例です。内側の for ループを約 20,000 回近く実行する必要があります (ここでは 2 回だけ実行しています)。しかし、内側の for ループは非常に時間がかかり、実用的ではありません。行プロファイラーでは、その行が Sp = np.dot(D1,L1)
表示され 、最も時間がかかります。上記のコードにかかる時間を短縮するにはどうすればよいですか。Sn = np.dot(D2,L2)
b = np.argmin(Err)
どんな助けでも大歓迎です。
ありがとう!