ホームページ >バックエンド開発 >Python チュートリアル >NumPy 配列: 形状 (R, 1) と (R,) の違いと行列の乗算への影響は何ですか?

NumPy 配列: 形状 (R, 1) と (R,) の違いと行列の乗算への影響は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 16:22:15604ブラウズ

NumPy Arrays: What's the Difference Between Shape (R, 1) and (R,) and How Does it Affect Matrix Multiplication?

NumPy の形状 (R, 1) と (R,) の違いは何ですか?

NumPy では、形状 (R, 1) を持つ配列に遭遇することがあります。そして(R,)。これらの形状は似ているように見えますが、基礎となるデータの異なる解釈を表しています。

形状 (R, 1) の配列は、R 行と 1 列の 2D 配列です。これは本質的には列ベクトルであり、R 要素のリストと考えることができます。対照的に、形状 (R,) の配列は、R 個の要素を持つ 1D 配列です。これは実質的にリストであり、各要素がスカラー値を表します。

行列の乗算を容易にするために (R, 1) を優先するように NumPy を設計しないのはなぜですか?

NumPy の設計上の選択は、(R, 1) を優先しないことです。 1) 行列乗算の形状は、その固有の柔軟性に由来します。両方の形状を許可すると、プログラマは特定のタスクに最も適切な表現を選択できるようになります。行列の乗算には (R, 1) 形状の方が便利ですが、ベクトルやスカラー値のリストを操作する場合など、他の状況では (R,) 形状の方が適している場合があります。

行列の乗算を実行するためのより良い方法

配列を明示的に再形成せずに、行列乗算を実行する別のアプローチがあります。たとえば、np.expand_dims() 関数を使用すると、目的の形状変換を実現できます。あるいは、NumPy が特定の条件下で自動的に実行するブロードキャストを利用することもできます。たとえば、式 numpy.dot(M[:,0], numpy.ones((1, R))) では、ブロードキャストにより numpy.ones((1, R)) が numpy.ones((R) に自動的に展開されます。 、1)).

以上がNumPy 配列: 形状 (R, 1) と (R,) の違いと行列の乗算への影響は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。