【NumPy】What does axis/axes mean in Numpy

在网上找到篇英文文章解释NumPy axes的,非常好理解,感兴趣的同学可以直接点击右侧的链接观看——> Numpy axes explained by Joshua Ebner


以下是我看完该文后的个人摘录:

NumPy axes就像是坐标系中的轴

先看一幅图——笛卡尔坐标系

一个二维的笛卡尔坐标系有两个轴——x轴和y轴,在笛卡尔空间中,这两个轴表示的就是直角的方向。如x轴,是指向右边的直角方向,而y轴则是指向上边的直角方向。

以坐标(2, 3)举例,2位于x轴,沿着x轴方向前进了2个单位。3位于y轴,沿着y轴方向前进了3个单位。

NumPy axes的作用和笛卡尔坐标类似,也是沿着什么方向前进。比如当axis分别等于0和1时,分别是沿着行和列的方向前进

Axis 0是沿着行前进的方向

Axis 1是沿着列前进的方向

NumPy数组的axes起始值是0

Python列表的元素的索引值是从0开始计数的,NumPy数组的axes值和Python列表的索引值一样,也是从0开始计数的。

举例说明如何使用NumPy的axes

以函数sum举例

首先,导入numpy,创建一个shape为(2, 3)的数组,初始值设为0到6的序列.

import numpy as np
np_array_2d = np.arange(0, 6).reshape([2,3])
print(np_array_2d)
#output:
#[[0 1 2]
# [3 4 5]]

然后使用numpy的sum函数,axis设为0,沿着行方向将元素进行相加

np.sum(np_array_2d, axis = 0)
#output:
#array([3, 5, 7])

利用同样的数据np_array_2d,使用sum函数,将axis设为1,沿着列方向将元素进行相加

np.sum(np_array_2d, axis = 1)
#output:
#array([3, 12])

以函数concatenate举例

创建两个相同shape的numpy数组,值分别填充为全1和全9

np_array_1s = np.array([[1,1,1],[1,1,1]])
np_array_9s = np.array([[9,9,9],[9,9,9]])
print(np_array_1s)
#output:
#array([[1, 1, 1],
#       [1, 1, 1]])
print(np_array_9s)
#output:
#array([[9, 9, 9],
#       [9, 9, 9]])

使用concatenate函数将这两个数组相连,axis设为0,沿着行方向进行拼接

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

和上面一样,同样的数据和操作,将axis改为1,沿着列方向进行拼接

np.concatenate([np_array_1s, np_array_9s], axis = 1)
#output:
#array([[1, 1, 1, 9, 9, 9],
#       [1, 1, 1, 9, 9, 9]])

关于1维数组的axis

1维数组只有一个axis

关于3维数组的axis

posted @ 2021-06-18 16:42  Shengjie  阅读(82)  评论(0编辑  收藏  举报