numpy轴axis

轴axis

numpy多维数组,为了表示维度方向,提出 轴 的概念。

  • 一维数组:只有0轴
  • 二维数组:有0轴、1轴
  • 三维数组:有0轴、1轴、2轴
  • 以此类推

轴和二维数组的关系

0轴 是沿着 行 的方向
1轴 是沿着 列 的方向

对于形状是 (3,4) 的numpy数组,
3 是 0轴长度,0轴表示 行;
4 是 1轴长度,1轴表示 列

轴和三维数组的关系

对于下面的数组

[[[7 5 7 6]
  [7 1 4 7]
  [6 2 7 5]]

 [[4 1 3 2]
  [1 6 4 2]
  [6 5 1 5]]]

表示2个3行4列的数组,画成图如下:

2 是 0轴长度
3 是 1轴长度
4 是 2轴长度

代码

生成形状是 (2,3,4) 的numpy数组,代码如下:

import numpy as np

np.random.seed(9)
arr=np.random.randint(1,9,(2,3,4))

执行结果如下:

[[[7 5 7 6]
  [7 1 4 7]
  [6 2 7 5]]

 [[4 1 3 2]
  [1 6 4 2]
  [6 5 1 5]]]

作用

有了轴的概念后,可以按照 轴 合并数组,对于多维数组的合并,可以让其按照 0轴 合并,或者 1轴 合并

也让计算方式更加多样,比如对二维数组求平均值:

  • 对该二维数组的 所有元素 求平均值
  • 对该二维数组的 每一行 求平均值
  • 对该二维数组的 每一列 求平均值

2维数组按照1轴求和

import numpy as np
np.random.seed(9)
arr=np.random.randint(1,9,(2,3))

print("数组:")
print(arr)

result=np.sum(arr,axis=1)
print("按照1轴求和:")
print(result)

result=np.sum(arr,axis=0)
print("按照0轴求和:")
print(result)

执行结果如下:

数组:
[[7 5 7]
 [6 7 1]]
按照1轴求和:
[19 14]
按照0轴求和:
[13 12  8]

原文出处:/show_1EF3nWHlZNd7.html