Pythonを使用して動的配列でNumpyブロードキャストを実行するにはどうすればよいですか?

PHPz
リリース: 2023-09-15 09:13:02
転載
828 人が閲覧しました

Pythonを使用して動的配列でNumpyブロードキャストを実行するにはどうすればよいですか?

「ブロードキャスト」とは、NumPy が算術演算中にさまざまな次元の配列を処理する方法を指します。小さい配列は、特定の制限に従って、大きい配列全体に「ブロードキャスト」され、その形状が確実に保たれます。ブロードキャストにより配列演算をベクトル化できるため、Python ではなく C でループできるようになります。"

これは不必要なデータのコピーを必要とせずに実現され、効率的なアルゴリズムの実装が実現します。場合によっては、ブロードキャストはメモリの無駄な使用を招き、計算速度を低下させるため、否定的な考えとなります。

この記事では、Python を使用して NumPy 配列でブロードキャストを実行する方法を説明します。

定数グループ上でブロードキャストを実行するステップ -

  • ステップ 1. 互換性のある次元の 2 つの配列を作成します

  • ステップ 2. 指定された配列を出力します

  • ステップ 3. 2 つの配列で算術演算を実行します

  • ステップ 4. 結果の配列を出力します

2 つの異なる性質の数グループを追加しました

arange() 関数を使用して、0 から n-1 の数字で構成される numpy 数値の集合を作成します (arange() 関数は、半区切り内の [start, stop] の値を返します)。 )、そこに何らかの常数値が追加されます。 ###例### リーリー

出力

リーリー

定数は 1 つの長さ (軸) を持ち、長さは 8 ですが、9 は軸に沿って伝播する (ただ引っ張られるだけ) という、長さのない単一の数です。数値の集合であり、数学的計算に適しています。

互換性のある 2 つの数グループを追加します

arange() 関数を使用して 0 から n-1 までの 2 つの NumPy 配列を作成し、 reshape() 関数でそれを再形成します (データに影響を与えずに配列を再形成します)。 2 つの配列は互換性のある次元 (3,4) および (3,1) を持ち、両方の配列の対応する要素を追加します。

###例### リーリー

出力

リーリー

givenArray_2 は、givenArray_1 の次元と一致するように 2 番目の次元に沿って拡張されます。両方の配列の次元に互換性があるため、これが可能になります。

互換性のない 2 つの数組の要求と

互換性のない次元 (6, 4) と (6, 1) を持つ 2 つの NumPy 配列を作成します。両方の配列の対応する要素を追加しようとすると、以下に示すようにエラーが発生します。

###例### リーリー

出力

リーリー

行数は6、列数は4です。

サイズ 20 の行列には挿入できません (サイズ 6*4 = 24 の行列が必要です)。

Numpy 多次元配列と線形配列の合計

arange() 関数を使用して多次元配列を作成し、 reshape() 関数を使用してランダムな数の行と列に形状を変更します。 arange() 関数を使用して別の線形配列を作成し、両方の配列を合計します。

例 1

リーリー

出力

リーリー

一連のリニアな数値グループは、2 つの数値グループ 1 (複数の数値グループ) のサイズに適合するように拡張されます。

例 2

リーリー

出力

リーリー

複数の配列が複数の次元に沿って伝播される可能性があることを理解することが重要です。配列 1 の次元は (6、5、4、2) ですが、配列 2 の次元は (5、4、1) です。次元配列は、array1 を 3 番目の次元に沿って拡張し、array2 を 1 番目と 2 番目の次元 (6、5、4、2) に沿って拡張することによって形成されます。

结论

Numpy のプレースメントは、最初の例から始まります。ユーザーは、この方法を使用せずに、数値グループを循環することによって、同じ数字を数値グループ内の各要素に追加できます。遅いのには 2 つの理由があります。循環では Python 循環とやり取りする必要があり、これにより C の実行速度が低下します。内部保存ボタンが発生する可能性があります。

以上がPythonを使用して動的配列でNumpyブロードキャストを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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