首页 > 分享 > python的axis=0 or 1 ?(迷糊笔记)

python的axis=0 or 1 ?(迷糊笔记)

之前学了numpy和pandas对axis这个参数感觉很懵。。。。

看了好多博博客,然而感觉。。。。还是很懵。。我可能太笨了吧

没办法死死记硬背吧,大佬如果有好的理解方法麻烦中在下方评论一下啊。。。

下面是个人的理解

首先什么是轴?

Pandas保持了Numpy对关键字axis的用法,用法在Numpy库的词汇表当中有过解释:

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

这个句话我也是没太读明白,我认为吧这个应该是观看整个数据的方法,0轴是沿着行然后一行一行的往下看,以下图为例(就是假如是axis=0,那么看这个数据的方法是 [0、1、2]然后[1,2,3]之后[1,2,3]......。。axis=1的话就是[0,1,1,1,1]z之后[1,2,2,2,2])

注:是个人理解,看看就好,我不太懂别误人子弟咯。

所以问题当中第一个列子 df.mean(axis=1)代表沿着列水平方向计算均值,而第二个列子df.drop(name, axis=1) 代表将name对应的列标签(们)沿着水平的方向依次删掉。

看如下代码:(来自:https://www.cnblogs.com/rrttp/p/8028421.html)

>>>df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]],

columns=["col1", "col2", "col3", "col4"])

>>>df

col1 col2 col3 col4

0 1 1 1 1

1 2 2 2 2

2 3 3 3 3

如果我们调用df.mean(axis=1),我们将得到按行计算的均值

>>> df.mean(axis=1)

0 1

1 2

2 3

然而,如果我们调用 df.drop((name, axis=1),我们实际上删掉了一列,而不是一行:

>>> df.drop("col4", axis=1)

col1 col2 col3

0 1 1 1

1 2 2 2

2 3 3

上方列出的博客写了一些跨行跨列的思想,我没看懂。。。

但是最后的几句话挺好:所以问题当中第一个列子 df.mean(axis=1)代表沿着列水平方向计算均值,而第二个列子df.drop(name, axis=1) 代表将name对应的列标签(们)沿着水平的方向依次删掉。

mean(axis=1)axis=1代表的就是看数据的方式,1代表是:第1轴沿着列的方向水平延伸(我上方举的例子:axis=1的话就是[0,1,1,1,1]之后看[1,2,2,2,2]

drop(name, axis=1) axis=1还是代表是:第1轴沿着列的方向水平延伸,但是前边指定了name参数。col4它是一个列,沿着列的方向水平延伸,水平延伸的话还是这个col4这列,所以看中就只是沿着列了,那么删除的展现形式是删除了一列(将name对应的列标签(们)沿着水平的方向依次删掉

Pandas的合并:

concat(axis=0),默认axis=0,向下合并

#定义资料集

df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])

df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])

df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])

#concat纵向合并

res = pd.concat([df1, df2, df3], axis=0)

#打印结果

print(res)

# a b c d

# 0 0.0 0.0 0.0 0.0

# 1 0.0 0.0 0.0 0.0

# 2 0.0 0.0 0.0 0.0

# 0 1.0 1.0 1.0 1.0

# 1 1.0 1.0 1.0 1.0

# 2 1.0 1.0 1.0 1.0

# 0 2.0 2.0 2.0 2.0

# 1 2.0 2.0 2.0 2.0

# 2 2.0 2.0 2.0 2.0

第0轴沿着行的垂直往下,那么就是向下加咯。

Numpy合并:(和pandas一样咯)

A = np.array([1,1,1])[:,np.newaxis]

B = np.array([2,2,2])[:,np.newaxis]

'''

[[1]

[1]

[1]]

[[2]

[2]

[2]]

'''

C = np.concatenate((A,B,B,A),axis=0)

print(C)

"""

array([[1],

[1],

[1],

[2],

[2],

[2],

[2],

[2],

[2],

[1],

[1],

[1]])

"""

D = np.concatenate((A,B,B,A),axis=1)

print(D)

"""

array([[1, 2, 2, 1],

[1, 2, 2, 1],

[1, 2, 2, 1]])

"""

个人对concat的axis理解:

axis=0:第0轴沿着行的垂直往下np.concatenate((A,B,B,A),axis=0),那么就是先A,然后向下在连接B,依次向下连接B、A。

axis=1:第1轴沿着列的方向水平延伸,同理。

相关知识

机器学习笔记14
Python进行数据的排序和排名
python 和 MATLAB 都能绘制的母亲节花束!!
0 for key in range(label + 1)}
机器学习(深度学习)笔记
数据分析(Python)入门—鸢尾植物数据集处理
使用Python一步一步地来进行数据分析总结
python学习笔记(十六)文件操作
使用Python实现深度学习模型:智能农业病虫害检测与防治
鸢尾花数据分类,通过Python实现KNN分类算法。

网址: python的axis=0 or 1 ?(迷糊笔记) https://m.huajiangbk.com/newsview1141734.html

所属分类:花卉
上一篇: Arbotix关节轨迹控制器的使
下一篇: steps