欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

一文弄懂Numpy中ndarray的维度(dimension)/轴数(axis/axes)问题

发布时间:2023/12/4 62 豆豆
生活随笔 收集整理的这篇文章主要介绍了 一文弄懂Numpy中ndarray的维度(dimension)/轴数(axis/axes)问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Numpy库的核心是ndarray,实际上就是N维数组(N-dimensional array),关于这个数据对象的详细介绍,参考官方文档最为合适。有一点要注意的是,ndarray的内置方法只有30多个,常用的如求平均值可以写a.mean(),但是求中位数就不可以,只能写np.median(a)。

言归正传,在Numpy中维度dimension被称为轴axis复数为axes)。对于一维数组,如a = np.array([1, 2, 3]),a.shape 等于(3, )。

根据广播机制的规则一,小维度数组的shape在最左边补1,所以一维数组会被隐式解释为二维行向量,当矩阵乘以行向量时,可以使用形状 (n, ) 或 (1, n) 得到相同的结果。但是注意一维数组不能通过转置变为二维列向量。


更具体的,一维数组、二维行向量与二维列向量的转换方式如下:


其中,flatten()和ravel()方法都是将数组展平为一维数组。两者之间的主要区别在于,ravel()生成的是对父数组的引用(即“视图”),这意味着对新数组的任何更改也会影响父数组,由于ravel不创建副本,因此内存效率高。flatten()则是创建了一个副本,对副本进行修改不会影响父数组。

在很多方法中,轴是作为参数出现的axis=0, 1, ...,如下:


对于轴参数,我们应该理解为“将要被消除或折叠的维度或轴”,而不是将要返回的维度或轴。因此,axis=0意味着行将要被折叠,多行将会变成一行;axis=1意味着列将要被折叠,多列将会变成一列。

总结

以上是生活随笔为你收集整理的一文弄懂Numpy中ndarray的维度(dimension)/轴数(axis/axes)问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。