python code for yaselmo

少しくらいpython書くの上達した証拠を見せてみよう。(承認欲求)

elmoと野生の読み太(7月3日版)から通称yaselmoを作成するスクリプトである。

短くすっきり書けるようになったでしょ。

where句はC++との整数演算の差を埋めてみる試みで,これでも配布物とちょっとズレてるみたい。

どうしたんだろう?

 

import numpy as np
import os

def kpp_load(evaldir):
kk = np.fromfile(os.path.join(evaldir, 'KK_synthesized.bin'), dtype='int32').reshape(81, 81, 2)
kkp = np.fromfile(os.path.join(evaldir, 'KKP_synthesized.bin'), dtype='int32').reshape(81, 81, 1548, 2)
kpp = np.fromfile(os.path.join(evaldir, 'KPP_synthesized.bin'), dtype='int16').reshape(81, 1548, 1548, 2)
return kk, kkp, kpp

def kpp_save(evaldir, kk, kkp, kpp):
kk.tofile(os.path.join(evaldir, 'KK_synthesized.bin'))
kkp.tofile(os.path.join(evaldir, 'KKP_synthesized.bin'))
kpp.tofile(os.path.join(evaldir, 'KPP_synthesized.bin'))
return

kk1, kkp1, kpp1 = kpp_load('elmo')
kk2, kkp2, kpp2 = kpp_load('yy0703')

kk3 = np.where(kk1 + kk2 > 0, (kk1 + kk2)//2, (kk1 + kk2 + 1)//2)
kkp3 = np.where(kkp1 + kkp2 > 0, (kkp1 + kkp2)//2, (kkp1 + kkp2 + 1)//2)
kpp3 = np.where(kpp1 + kpp2 > 0, (kpp1 + kpp2)//2, (kpp1 + kpp2 + 1)//2)

kpp_save('yaselmo', kk3, kkp3, kpp3)