numpy数组是(n,1)和(n,)

时间:2022-11-25 19:33:53

What is the difference between a numpy array (lets say X) that has a shape of (N,1) and (N,). Aren't both of them Nx1 matrices ? The reason I ask is because sometimes computations return either one or the other.

具有(N,1)和(N,)形状的numpy数组(简称X)之间有什么区别。这两个都不是Nx1矩阵吗?我问的原因是因为有时计算会返回一个或另一个。

1 个解决方案

#1


9  

This is a 1D array:

这是一维数组:

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

This array is a 2D but there is only one element in the first dimension:

此数组是2D,但第一维中只有一个元素:

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

Transposing gives the shape you are asking for:

移调会给出您要求的形状:

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

Now, look at the array. Only the first column of this 2D array is filled.

现在,看看数组。仅填充此2D阵列的第一列。

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

Given these two arrays:

鉴于这两个数组:

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

You can take advantage of broadcasting:

你可以利用广播:

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

The missing numbers are filled in. Think for rows and columns in table or spreadsheet.

填写缺失的数字。想想表格或电子表格中的行和列。

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

Doing this with higher dimensions gets tougher on your imagination.

以更高的尺寸进行此操作会让您的想象力变得更加艰难。

#1


9  

This is a 1D array:

这是一维数组:

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

This array is a 2D but there is only one element in the first dimension:

此数组是2D,但第一维中只有一个元素:

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

Transposing gives the shape you are asking for:

移调会给出您要求的形状:

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

Now, look at the array. Only the first column of this 2D array is filled.

现在,看看数组。仅填充此2D阵列的第一列。

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

Given these two arrays:

鉴于这两个数组:

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

You can take advantage of broadcasting:

你可以利用广播:

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

The missing numbers are filled in. Think for rows and columns in table or spreadsheet.

填写缺失的数字。想想表格或电子表格中的行和列。

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

Doing this with higher dimensions gets tougher on your imagination.

以更高的尺寸进行此操作会让您的想象力变得更加艰难。