当前位置: 首页 > 工具软件 > Axis Mundi > 使用案例 >

NumPy库---Axis理解

濮君植
2023-12-01

NumPy库—Axis理解

很多人认为axis=0代表的是行,axis=1代表的是列。但其实不是这么理解的。
简单来说,最外层的括号代表着axis=0,依次往里的括号对应的axis的计数就依次加1
例如:

[[0,1],[2,3]]

其中,最外层括号代表的就是axis=0,下一层的括号代表的就是axis=1
操作方式:如果指定轴进行相关的操作,那么它会使用轴下的每个直接子元素的第0个,第1个,第2个…分别进行相关操作
比如现在有一个二维数组:

x = np.array([[0,1],[2,3]])
  1. x数组在axis=0axis=1两种情况下的和:
x.sum(axis=0)

# result:
array([2,4])

按照axis=0的方式进行相加,那么就会把最外面轴下的所有直接子元素中的第0个位置进行相加,第1个位置进行相加…依此类推,得到的就是0+2以及2+3,然后进行相加,得到的结果就是[2,4]

x.sum(axis=1)

# result:
array([1, 5])

按照axis=1的方式进行相加,那么就会把轴为1里面的元素拿出来进行求和,得到的就是0,1,进行相加为1,以及2,3进行相加为5,所以最终结果就是[1,5]了。
2. 用np.maxaxis=0axis=1两种情况下的最大值:

np.random.seed(100)
x = np.random.randint(0,10,size=(3,5))
x

# result:
array([[8, 8, 3, 7, 7],
       [0, 4, 2, 5, 2],
       [2, 2, 1, 0, 8]])

对每列求最大值

x.max(axis=0)

# result:
array([8, 8, 3, 7, 8])

按照axis=0进行求最大值,那么就是在最外面轴里面找直接子元素,然后将每个子元素的第0个值放在一起求最大值,将第1个值放在一起求最大值,以此类推。而如果axis=1,那么就是拿到每个直接子元素,然后求每个子元素中的最大值:

x.max(axis=1)

# result:
array([8,5,8])
  1. np.deleteaxis=0axis=1两种情况下的删除操作:
np.random.seed(100)
x = np.random.randint(0,10,size=(3,5))

# axis=0:
np.delete(x,0,axis=0) # 按照直接子元素的顺序标号,并删除第0号直接子元素

# result:
array([[0, 4, 2, 5, 2],
       [2, 2, 1, 0, 8]])

np.delete是个例外,按照axis=0的方式进行删除,那么它会首先找到最外面的括号下的直接子元素中的第0个,然后删掉。

np.delete(x,0,axis=1) # 把内层括号中的直接子元素按顺序标号,取0号元素出来并一并删除

# result:
array([[8, 3, 7, 7],
       [4, 2, 5, 2],
       [2, 1, 0, 8]])

同理,如果我们按照axis=1进行删除,那么会把第一列的数据删掉。
4. 三维数组的相关操作:

y = np.arange(24).reshape(2,2,6)
y

# result:
array([[[ 0,  1,  2,  3,  4,  5],
        [ 6,  7,  8,  9, 10, 11]],

       [[12, 13, 14, 15, 16, 17],
        [18, 19, 20, 21, 22, 23]]])

相关操作

y.sum(axis=0)

# result:
array([[12, 14, 16, 18, 20, 22],
       [24, 26, 28, 30, 32, 34]])
 类似资料: