前提・実現したいこと
スライス位置が格納されたndarrayを使って、別のndarrayに複数のスライス操作を適用したい
発生している問題・エラーメッセージ
for 文で実装できることは理解してますが、効率的ではないと考えています。
より効率的な手法がないものかと思い、質問してみました。
ndarray だけで完結されられれば、早くなりそうだなあ。
該当のソースコード
Python
1# start, end のスライス位置 (M*Nのndarrayが2つ) 2start_pos = np.random.randint(0, 20, (4, 4)) 3offset = np.random.randint(1, 20, (4, 4)) 4end_pos = start_pos + offset 5 6# スライスを適用する対象 7sample_data = np.random.rand(50) 8 9# 演算結果格納先 (M*Nのndarrayで出力) 10dst_array = np.empty_like(start_pos, np.float) 11 12for i in range(start_pos.shape[0]): 13 for j in range(start_pos.shape[1]): 14 # スライス位置 15 s = start_pos[i,j] 16 e = end_pos[i,j] 17 # 指定のスライス位置に何らかの処理 18 temp = np.max(sample_data[s:e]) 19 dst_array[i,j] = temp
試したこと
上記のとおり、for文で実装できることは確認済みです。
補足情報(FW/ツールのバージョンなど)
Python 3.x
numpy など
ライブラリに縛りはありません
回答1件
あなたの回答
tips
プレビュー