NumPy 配列の形状 (R, 1) と (R,) の違い
NumPy では、配列は微妙に異なる形状を持つことができます。 (R, 1) や (R,) など。これらの形状は似ているように見えますが、解釈と処理の方法に根本的な違いがあります。
1.配列構造を理解する
NumPy 配列はデータ バッファーとビューで構成されます。データ バッファーには生のデータ要素が格納され、ビューにはデータの解釈方法が記述されます。シェイプはビューの一部であり、配列に含まれる次元と要素の数を指定します。
Shapes (R, 1) および (R,)
2.異なる形状の理由
NumPy は、歴史的な理由から、また特定の操作に柔軟性を提供するために、両方の形状をサポートすることを選択しました。一部の操作では、特定の形状の配列を期待または生成するため、入力形状に応じて異なる動作が発生します。
3.行列乗算の影響
例では、numpy.dot(M[:,0], numpy.ones((1, R))) の形状により問題が発生する可能性があります。 M[:,0] の形状は (R,) ですが、numpy.ones((1, R)) の形状は (1, R) であるため、位置ずれエラーが発生します。これを解決するには、M[:,0] を (R, 1).
4 に明示的に再形成します。ベスト プラクティス
(R, 1) と (R,) の間に厳密な優先順位はありませんが、配列が論理的に 1 次元であるが追加の配列が必要な場合は、一般に (R, 1) を使用することをお勧めします。特定の操作のディメンション。エラーを避けるために、使用する関数で予想される形状に注意してください。
代替アプローチ
この例では、再形成を避けるために次の代替手段を検討することもできます。
以上がNumPy の配列形状 (R, 1) と (R,) の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。