对于np.array([1,2,3]),为什么形状(3,)代替(3,1)?

Ala*_*wad 2 python arrays numpy

我注意到对于一个排名为1的数组,其中3个元素为numpy返回(3,)形状.我知道这个元组代表了每个维度上数组的大小,但为什么不是它(3,1)呢?

import numpy as np

a = np.array([1, 2, 3])  # Create a rank 1 array
print a.shape            # Prints "(3,)"

b = np.array([[1,2,3],[4,5,6]])   # Create a rank 2 array
print b.shape                     # Prints "(2, 3)"
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 8

简而言之,这是因为它是维数组(因此是一个元素形状元组).也许以下内容有助于澄清问题:

>>> np.array([1, 2, 3]).shape
(3,)
>>> np.array([[1, 2, 3]]).shape
(1, 3)
>>> np.array([[1], [2], [3]]).shape
(3, 1)
Run Code Online (Sandbox Code Playgroud)

我们甚至可以三维(和更高):

>>> np.array([[[1]], [[2]], [[3]]]).shape
(3, 1, 1)
Run Code Online (Sandbox Code Playgroud)