numpy array.shape行为

numpy array.shape行为,numpy,numpy-ndarray,Numpy,Numpy Ndarray,有关下列事项: d = np.array([[0,1,4,3,2],[10,18,4,7,5]]) print(d.shape) 输出为: (2,5) 这是意料之中的 但是,对于这一点(各行中元素数量的差异): 输出为: (2,) 如何解释这种行为?简短回答:它将其解析为两个对象的数组:两个列表 Numpy用于处理“矩形”数据。如果您将非矩形数据传递给它,np.array(..)函数会将其视为对象列表 实际上,请在此处查看数组的dtype: >>> d array([list

有关下列事项:

d = np.array([[0,1,4,3,2],[10,18,4,7,5]])
print(d.shape)
输出为:

(2,5)

这是意料之中的

但是,对于这一点(各行中元素数量的差异):

输出为:

(2,)


如何解释这种行为?

简短回答:它将其解析为两个对象的数组:两个列表

Numpy用于处理“矩形”数据。如果您将非矩形数据传递给它,
np.array(..)
函数会将其视为对象列表

实际上,请在此处查看数组的
dtype

>>> d
array([list([0, 1, 4, 3, 2]), list([10, 18, 4, 7])], dtype=object)
>>d
数组([list([0,1,4,3,2]),列表([10,18,4,7]),dtype=object)

它是一个一维
数组
,包含两个项目和两个列表。这些列表只是对象。

感谢您的输入。顺便说一句,python初学者有什么好的numpy资源吗?有很多
numpy
文档。但您的示例的问题是,试图从大小不同的列表生成2d数组是一种错误
np.array
通常生成多维数字数组。制作1d对象数据类型数组是一种退后选择。在这么多的问题中,它得到了大量的关注,而在正式的文档或教程中则没有这么多。
>>> d
array([list([0, 1, 4, 3, 2]), list([10, 18, 4, 7])], dtype=object)