Numpy Axes/Axis 详情
来源:     阅读:578
织梦模板店
发布于 2021-03-20 07:34
查看主页

学习 Numpy 的时候, Axes 是一个不容易搞懂的东西, 本文就是相关的一篇学习笔记。(原文链接在参考资料中)


在 Numpy 中 Aexs 是沿着那个方向去看数据

例如在一个 2D array 中, 0,1 的方向分别如下

image.png

在不同的numpy 函数中要看清楚函数说明, 才能正确运用 axis

Aggregation

sum, mean, std 之类的函数, 会沿着 Axes "坍缩", 这些函数会使得整个结构降维。

print(np_array_2d)[[0 1 2] [3 4 5]]np.sum(np_array_2d, axis = 0)array([3, 5, 7])

上面这个例子中, sum 会沿着 axis 0 的方向,进行求和, 结束后,真个数据结构维度就会下降成1维。

image.png
Concatenate

Concatenate 是将2个数据结构进行 “堆叠”, 是 “坍缩”的逆过程。 axis 是指明了 “堆叠”的方向。

array([[1, 1, 1],       [1, 1, 1]])array([[9, 9, 9],       [9, 9, 9]])np.concatenate([np_array_1s, np_array_9s], axis = 0)array([[1, 1, 1],       [1, 1, 1],       [9, 9, 9],       [9, 9, 9]])

上面这个例子, 是将2个数据结构, 沿着 axis=0 的方向进行堆叠。

image.png
一维数组只有 axis =0
np.concatenate([np_array_1s_1dim, np_array_9s_1dim], axis = 1)
高维数组

对于高维数组很难有直观的想象 ,这里给个例子

x = np.array((((1,2), (3,4) ), ((5,6),(7,8))))array([[[1, 2],        [3, 4]],        [[5, 6],        [7, 8]]])x.sum(axis=0)array([[ 6,  8],         [10, 12]])x.sum(axis=1)array([[ 4,  6],          [12, 14]])x.sum(axis=2)array([[ 3,  7],       [11, 15]])

网上有图, 给出了三维数组中的 axis

image.png

规律

这个是我个人总结的规律, 没有经过验证:

不论数据是几维的, 其存储在内存中一定是一维的。axis 值越高,其覆盖范围越小, axis 值越低,其覆盖范围越大。 可以了解成 axis0 是一级目录, axis 是一级目录中的二级目录, 依次类推, 用图形表达如下:

image.png

图中 axis 0 跨度是64 bytes, 而 axis 1 只是有32 byte; 每个 axis 0 包含了2个axis 1方向的子数据。


参考资料

[1] numpy axes explained
[2] Stack Overflow: axis in a multidimensional numpy-array

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 软件环境
相关推荐
vue+vant+nodejs上传图片
React中使用Antd TreeSelect组件获取选中节点的所有子节点,递归获取
投递简历无回应,你的简历应该这样写!
全面理解Nginx功能(不加载第三方板块的情况)
Centos中Docker的安装方法
首页
搜索
订单
购物车
我的