亲宝软件园·资讯

展开

Python axis参数

二哥不像程序员 人气:0

在我们使用Python中的Numpy和Pandas进行数据分析的时候,经常会遇到一个让人感到头痛的参数——axis,本文让我们换一个角度来重新认识一下axis。

一、axis简介

通常情况下我们都会赋予axis参数“轴”的概念,对于常见的二维数据来说,我们有如下的表示形式:

在这里插入图片描述

对于这种常见的结构来说,看上去很清晰,但是涉及到实际操作的时候就会变的难以理解,下面让我们用色横货中的例子来学习一下。

二、不一样的axis

对于axis=0

当axis=0的时候,我们可以将数据和轴组成的整体看作是一串竖着摆放的糖葫芦(棍垂直于水平面)示例如下图所示:

在这里插入图片描述

此时图中的[1,2,3]、[4,5,6]可以分别看作是糖葫芦的两个果子,而红色的轴则表示穿着果子的棍(axis=0),对于此时的状态,每个果子是一个整体,当进行sum()加和操作时,我们需要将两个果子对应位置的数据进行相加而不是将每个果子进行加和,最终可以得到结果[5,7,9]

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
np.sum(a, axis=0)

# 结果
# array([5, 7, 9])

当进行元素添加操作的时候,我们所做的事情就是在原有的糖葫芦基础上添加一个果子,果子的结构也要像前两个果子的结构一样,示例图如下所示:
在这里插入图片描述
此时操作的示例代码如下所示:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
np.append(a, [[7, 8, 9]], axis=0)

# 结果
# array([[1, 2, 3],
#        [4, 5, 6],
#        [7, 8, 9]])

对于带有参数axis=0删除等操作也同添加的思想一样,只要我们将其想象成在操作糖葫芦的果子即可。

三、总结

当axis=1的时候不难想到,我们要做的操作就是在一根水平摆放的糖葫芦上进行,所有操作的基本原理都和axis=0时相同。

补充:python中某些函数axis参数的理解

总结为一句话:设axis=i,则numpy沿着第i个下标变化的方向进行操作。

当然,这个i是从0开始数的,作为程序员的你一定不会搞错。

axis意为“轴”,它指定了函数在张量(矩阵、等等)上进行操作的方向。
例如有一个ndarray,名叫A,A.shape=(3,8,5,7)。
那么np.sum(A, axis=2)计算的结果的shape就是(3,8,7)。
假设这个shape是(3,8,7)的ndarray变量名为B,那么实际上:

B[i][j][k]=A[i][j][0][k]+A[i][j][1][k]+A[i][j][2][k]+A[i][j][3][k]+A[i][j][4][k]

以下代码你可以自己跑一下试试:

import numpy as np

A=np.random.randn(3,8,5,7)
print("A.shape=",A.shape)

B=np.sum(A,axis=2)
print("B.shape=",B.shape)

预期输出为:

A.shape= (3, 8, 5, 7)
B.shape= (3, 8, 7)

加载全部内容

相关教程
猜你喜欢
用户评论