Numpy中shape函数的用法详解
本文详细解析Numpy中shape函数的功能与用法。通过一维、二维及三维数组实例,展示如何获取数组各维度的元素个数。文章涵盖np.array创建不同维度数组时的括号包裹规则及输出格式,帮助开发者准确理解并应用shape属性进行数据维度分析。
shape函数基础功能与返回值
shape函数的核心功能是获取矩阵或数组的维度信息。例如,通过shape[0]可以读取矩阵第一维度的长度,这通常对应于行数。该函数的输入参数既可以是表示维度的整数,也可以是具体的矩阵对象。执行后,shape函数返回一个元组,用以描述数组(或矩阵)在各个维度上的大小,具体示例如下所示。
当数组仅包含一个维度时,shape属性仅返回shape[0],其值为该一维数组中元素的总个数。通俗而言,这代表列数,因为一维数组在结构上可视作单行数据。在此情况下,使用array创建数组时,括号()和中括号[]均可使用,但在处理多维数据时这种简化方式不再适用,此处建议使用中括号[]进行创建,参考以下示例。
一维数组的shape属性
>>> a=np.array([1,2])
>>> a
array([1, 2])
>>> a.shape
(2L,)
>>> a.shape[0]
2L
>>> a.shape[1]
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
a.shape[1]
IndexError: tuple index out of range #最后报错是因为一维数组只有一个维度,可以用a.shape或a.shape[0]来访问
>>> a=np.array((1,2))
>>> a
array([1, 2]) #这个使用的是两个()包裹,得到的数组和前面的一样
若数组包含两个维度(即行与列),其shape属性的行为符合常规逻辑。a.shape返回的元组将依次表示该数组的行数与列数,具体表现见下例。
二维数组的shape属性
>>> a=np.array([[1,2],[3,4]]) #注意二维数组要用()和[]一起包裹起来,键入print a 会得到一个用2个[]包裹的数组(矩阵)
>>> a
array([[1, 2],
[3, 4]])
>>> a.shape
(2L, 2L)
>>> b=np.array([[1,2,3],[4,5,6]])
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> b.shape
(2L, 3L)
对于三维数组,创建时需使用一对圆括号()和两对方括号[]进行包裹。执行print a命令后,将看到一个由三个中括号[]包裹的数组(矩阵)结构,具体示例如下。
三维数组的shape属性
>>> a=np.array([[[1,2],[3,4]]])
>>> a
array([[[1, 2],
[3, 4]]])
>>> a.shape
(1L, 2L, 2L)
此时返回的元组表示三个维度各自包含的元素数量。具体而言,在一维情况下,元素个数即为长度;在二维情况下,分别表示行数和列数;而在三维情况下,a.shape[0]代表创建的块数,a.shape[1]和a.shape[2]则分别表示每一块(每块均为二维结构)的行数和列数,举例说明如下。
多维数组元素构成解析
>>> a=np.ones([2,2,3])#创建两个2行3列的数组(矩阵)
>>> a
array([[[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 1., 1., 1.],
[ 1., 1., 1.]]])
总结使用np.array()创建数组时的规律:
一维数组可直接通过np.array([1,2,3])或np.array((1,2,3))创建,执行print输出时的结果为:
不同维度数组创建与输出格式总结
>>> print a
[1 2 3]
输出结果外部由一个[]包裹;
二维数组需使用np.array([[1,2,3],[1,2,3]])的形式,即用一个圆括号()和一个中括号[]将输入的列表包裹起来,执行print输出时的结果为:
>>> print a
[[1 2 3]
[1 2 3]]
输出结果外部由两个[]包裹;
三维数组需使用np.array([[[1,2,3],[1,2,3]]])的形式,即用一个圆括号()和两个中括号[]将输入的列表包裹起来,执行print输出时的结果为:
>>> print a
[[[1 2 3]
[1 2 3]]]
输出结果外部由三个[]包裹;
对于更高维度的情况,后续可进一步研究探讨。
至此,关于Numpy中shape函数用法的详解介绍完毕。如需了解更多相关Numpy shape函数用法内容,请搜索本站历史文章或继续浏览下方相关文章,感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













