18

(N,1) と (N,) の形状を持つ numpy 配列 (X としましょう) の違いは何ですか。両方とも Nx1 行列ではありませんか? 私が尋ねる理由は、計算がどちらか一方を返すことがあるからです。

4

1 に答える 1

15

これは 1D 配列です。

>>> np.array([1, 2, 3]).shape
(3,)

この配列は 2D ですが、最初の次元には 1 つの要素しかありません。

>>> np.array([[1, 2, 3]]).shape
(1, 3)

転置すると、求めている形状が得られます。

>>> np.array([[1, 2, 3]]).T.shape
(3, 1)

次に、配列を見てください。この 2D 配列の最初の列のみが埋められます。

>>> np.array([[1, 2, 3]]).T
array([[1],
       [2],
       [3]])

次の 2 つの配列があるとします。

>>> a = np.array([[1, 2, 3]])
>>> b = np.array([[1, 2, 3]]).T
>>> a
array([[1, 2, 3]])
>>> b
array([[1],
       [2],
       [3]])

ブロードキャストを利用できます。

>>> a * b
array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])

欠けている数字が埋められます。表またはスプレッドシートの行と列を考えてみてください。

>>> a + b
array([[2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]]) 

より高い次元でこれを行うと、想像力が難しくなります。

于 2013-06-08T02:24:33.673 に答える