「Numexprを使用して多次元Numpy配列操作を最適化する方法」
『Numexprを使って多次元Numpy配列の操作を最適化する方法』(Numexpr wo tsukatte tajigen Numpy hairetsu no sosa wo saiteki suru houhou)
高速演算
Numpyにおけるパフォーマンス最適化の現実世界の事例研究
この記事は比較的短いものです。現実のシナリオを例にして、多次元Numpy配列内でNumexpr式を使用して大幅なパフォーマンス向上を実現する方法を説明します。
多次元Numpy配列やNumexpr式の使用方法について説明する記事はあまりありませんので、この記事がお役に立てれば幸いです。
はじめに
最近、古い仕事のレビュー中に、このコードを見つけました:
def predict(X, w, b): z = np.dot(X, w) y_hat = sigmoid(z) y_pred = np.zeros((y_hat.shape[0], 1)) for i in range(y_hat.shape[0]): if y_hat[i, 0] < 0.5: y_pred[i, 0] = 0 else: y_pred[i, 0] = 1 return y_pred
このコードは、機械学習のロジスティック回帰モデルにおいて、予測結果を確率から0または1のクラス分類結果に変換します。
しかし、numpyのndarrayをイテレートするためにforループ
を使用する人は誰でしょうか?
データがある程度の量に達すると、多くのメモリを占有するだけでなく、パフォーマンスも劣ることが予想されます。
そう、このコードを書いたのは、若かりし頃の私なのです。
責任感を持って、私は今日、Numexprライブラリを使用してこのコードを書き直す予定です。
その過程で、NumexprおよびNumexprのwhere
式を多次元Numpy配列で使用して、大幅なパフォーマンス向上を実現する方法を紹介します。
コードの実装
Numexprの基本的な使い方について詳しく知りたい場合は、次の記事を参照してください:
Numexprの探索:Pandasの強力なエンジン
PythonのNumexprおよびPandasのeval/query関数を使用したデータ分析のパフォーマンス向上
towardsdatascience.com
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles