私はnumpy配列を使用できるほどの性能を絞っています。Python 3のNUMPY配列にルックアップテーブルを適用する最も効率的な方法
私はルックアップテーブルを持っています。 MYLUT = [0,2,5,7,8,12、-1、...、229]
そして、私は(300,200000)形状のuint8の値でnumpyの配列myarrayのを持っている
何ルックアップテーブルをMYARRAYのすべての要素に適用する最も速い方法ですか?
現在、私はちょうどforループを使用しています:
for i in range(300) :
for j in range(200000) :
MYARRAY[i][j] = MYLUT[MYARRAY[i][j]]
私はもっとうまくできますか?これは既にPythonでこれを行う最も速い方法ですか?
これはnumpy.takeを使用すると少し速いようです。私がここに来てから、どうやって形の数え切れない配列を作成するのですか?(100,1000)行のすべての要素が行のインデックスの値を保持するので、行0では配列要素は[0,0 、... 0](< - a 1000)、最後の行は[999,999、... 999]となります。今ではリストの理解度を使ってnumpy.asarray()を使ってキャストしています – bFig8
'np.repeat(np.arange(100)、1000).reshape(100,1000)'や 'np .broadcast_to(np.arange(100)[:, None]、(100、1000)) 'です。合計100行があるので、あなたは '999'と言うときに' 99'を意味すると思いますか? – Psidom
ニース!ありがとう!ああ、そうだよ。それは[99,99、... 99]でなければならない。 – bFig8