本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

pandas的axis参数理解与Numpy中的axis参数理解

发布于2021-07-25 07:36     阅读(555)     评论(0)     点赞(8)     收藏(4)


pandas中简单的二维矩阵

  • axis=0或者“index” :
    如果是单行操作,就指的是某一行
    如果是聚合操作,指的是跨行cross rows
  • axis=1或者“columns”
    如果是单列操作,就指的是某一列
    如果是聚合操作,指的是跨列cross columns
    在这里插入图片描述
    按哪个axis,就是这个axis要动起来(类似被for循环遍历),其他的axis保持不动
    在二位矩阵中将axis=0理解成行,axis=1理解成列是没有问题的,但是在多维度矩阵中就比较难以理解,接下来会介绍多维矩阵中的理解方法
    先看例子:首先是生成测试数据,数据为0-11的三行四列的二维矩阵,列名为A,B,C,D
df = pd.DataFrame(np.arange(12).reshape(3,4),columns=["A","B","C","D"])
df

#结果:
	A	B	C	D
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11

进行单行删除操作(axis = 0) 需要指定行索引

print(df.drop(0,axis=0))

#结果:
   A  B   C   D
1  4  5   6   7
2  8  9  10  11

进行跨行求均值聚合操作(axis = 0) ,就是跨行操作,axis = 0在动,其他的axis不动,得到的实际就是每一列均值

print(df.mean(axis=0))

#结果:
A    4.0
B    5.0
C    6.0
D    7.0
dtype: float64

进行单列删除操作(axis = 1) 需要指定列名

print(df.drop(['A'],axis=1))

#结果:
   B   C   D
0  1   2   3
1  5   6   7
2  9  10  11

进行跨列求均值聚合操作(axis = 1) ,就是跨列操作,axis = 1在动,其他的axis不动,得到的实际就是每一行均值

print(df.mean(axis=1))

#结果:
0    1.5
1    5.5
2    9.5
dtype: float64

Numpy中的多维矩阵(建议二维也参照这个理解)

在多维矩阵中就不能把axis=0理解成行,axis=1,理解成列了,要将axis理解成轴更合理,有个不变的规则是,axis=0,永远指的是narray最外层的括号,axis=1是第二个括号,axis=2是第三个括号,以此类推。
代码分析验证:生成数据,数据是0-23的,矩阵形状是(2,3,4)

data = np.arange(24).reshape(2, 3, 4)
data
#结果:
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]]])

其中reshape(2,3,4) ,维度2代表的是最外层括号,即axis=0 ,维度3即axis=1,维度4即axis=2
假设我们取均值 要拿掉维度2(axis=0),按照上面的理解我们拿掉的是最外层的括号,得到的维度应该是3*4

print (data.mean(axis=0))
#结果:
[[ 6.  7.  8.  9.]
 [10. 11. 12. 13.]
 [14. 15. 16. 17.]]

具体的计算逻辑为:我们要消灭的维度为2,所以参与计算的元素是两个,比如6这个值,是0与12求平均的结果,结果矩阵b中b[0][0]是a[0][0][0]与a[1][0][0]求平均的结果
假设要消灭的维度为3,axis=1,参与计算的元素是3个,最后的结果是2*4。

print (data.mean(axis=1))
#结果:
[[ 4.  5.  6.  7.]
 [16. 17. 18. 19.]]

结果矩阵b[0][0]是a[0][0][0]+a[0][1][0]+a[0][2][0]平均的结果



所属网站分类: 技术文章 > 博客

作者:新宫之晨

链接:http://www.pythonpdf.com/blog/article/534/07fe7a89f47f22ebd55b/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

8 0
收藏该文
已收藏

评论内容:(最多支持255个字符)