What does axis/axes mean in Numpy

Posted 零与梦里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于What does axis/axes mean in Numpy的主要内容,如果未能解决你的问题,请参考以下文章

What does -1 mean in numpy reshape?

What does it mean window.property in js?

Helix, what does it mean for Sitecore CMS development?

What does "size" in int(size) of MySQL mean?

(译)What does explicit keyword mean?

空间复杂度是什么?What does ‘Space Complexity’ mean? ------geeksforgeeks 翻译