之前学了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轴沿着列的方向水平延伸,同理。