为什么使用形状为 (x,) 的数组而不是 (x,1)?

dra*_*ine 5 python numpy

我最近遇到了一些错误,因为 numpy 数组的形状为 (x,) - 这些可以通过下面的代码片段轻松修复

a = np.array([1,2,3,4]) #this form produced a bug
a.shape 
>>> (4,)  
a.shape = [4,1] #but this change fixed it 
Run Code Online (Sandbox Code Playgroud)

但这确实让我想知道,为什么 (x,) 是一维数组的默认形状?

Kas*_*mvd 3

shape的元组中的每一项都表示一个轴。当其中有一项时,意味着您的数组是一维(1 轴)的,否则它将是一个二维数组。当你这样做时,a.shape = [4,1]你只需将一维数组转换为二维数组:

In [26]: a = np.array([1,2,3,4])
In [27]: a.shape = [4,1]

In [28]: a.shape        
Out[28]: (4, 1)

In [29]: a
Out[29]: 
array([[1],
       [2],
       [3],
       [4]])
Run Code Online (Sandbox Code Playgroud)