ホームページ > バックエンド開発 > Python チュートリアル > NumPy 配列上に関数をマッピングする最も効率的な方法は何ですか?

NumPy 配列上に関数をマッピングする最も効率的な方法は何ですか?

Barbara Streisand
リリース: 2025-01-04 03:50:39
オリジナル
429 人が閲覧しました

What's the Most Efficient Way to Map Functions Over a NumPy Array?

効率的な Numpy 配列マッピング戦略

Numpy 配列上で関数をマッピングする場合、パフォーマンス効率が非常に重要です。 「マッピング操作の最も効率的なアプローチは何ですか?」

非効率なアプローチ: Python リストの理解

質問で提供されている例ではリストが使用されています理解:

squares = np.array([squarer(xi) for xi in x])
ログイン後にコピー

このアプローチは機能しますが、次のような本質的な非効率性があります。 Python リストから Numpy 配列への中間変換。

最適化された戦略

さまざまな方法をテストすると、最適なソリューションが現れます:

1.組み込みの Numpy 関数を使用する:

マッピングしている関数がすでに Numpy でベクトル化されている場合 (例: x^2)、それを直接使用すると優れたパフォーマンスが得られます:

squares = x ** 2
ログイン後にコピー

2. numpy.vectorize によるベクトル化:

カスタム関数の場合、numpy.vectorize によるベクトル化により速度が大幅に向上します:

f = lambda x: x ** 2
vf = np.vectorize(f)
squares = vf(x)
ログイン後にコピー

3. numpy.fromiter:

このアプローチは、関数から反復子を作成し、numpy.fromiter を使用して Numpy 配列を効率的に構築します:

squares = np.fromiter((squarer(xi) for xi in x), x.dtype)
ログイン後にコピー

4。 numpy.array(list(map(...)):

もう 1 つの最適化された代替案は、map を使用してそれを Numpy 配列に変換することです:

squares = np.array(list(map(squarer, x)))
ログイン後にコピー

ベンチマークを実施perfplot を使用すると、これらの最適化されたメソッドが元のリスト理解アプローチよりも大幅に優れていることがわかります。

以上がNumPy 配列上に関数をマッピングする最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート