numpy 和 pandas 计算中 axis 的一些理解

Posted 三つ叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy 和 pandas 计算中 axis 的一些理解相关的知识,希望对你有一定的参考价值。

对于 pandas 中的一些计算 computation 的问题中使用到的 axis,并非是在 axis 方向上进行计算,而是在 axis 方向上传播,你会发现,运算结束,原先的那个 axis 维度消失了

不过对于 apply,, df.dropna() 之类的问题 axis 还是理解为 along the axis 比较好

搬运 stackoverflow 上的一些解释:

axis=0 means each row as a bulk, we only can manipulate DataFrame inter-row instead of inner-row. axis=1 means each column as a bulk, we only can manipulate DataFrame inter-column instead of inner-column. So if you use df.drop(“A”, axis = 1), it will drop a whole column. – Belter

对于 np.sum 中的 axis

b = np.arange(24).reshape(2,3,4)
b
--------------------------
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]]])
b.sum(axis=0)

-------------------------
array([[12, 14, 16, 18],
       [20, 22, 24, 26],
       [28, 30, 32, 34]])

代码解释

a = np.zeros(3,4)
for i in range(3):
    for j in range(4):
        a[i,j] += a[:,i,j].sum()

对于 np.concatenate 中的 axis

arr = np.arange(12).reshape((3, 4))
arr
----------------------------------
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
np.concatenate([arr, arr], axis=0)
-----------------------------------------
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
np.concatenate([arr, arr], axis=1)
-----------------------------------------
array([[ 0,  1,  2,  3,  0,  1,  2,  3],
       [ 4,  5,  6,  7,  4,  5,  6,  7],
       [ 8,  9, 10, 11,  8,  9, 10, 11]])

对 axis=0 的 concatenate 操作,在第一个轴进行了合并,由原来的 (3,4) --> (6,4)

对 axis=1 的 concatenate 操作,在第二个轴进行了合并,由原来的 (3,4) --> (3,8)

pandas 中的 pd.concat() 同理

以上是关于numpy 和 pandas 计算中 axis 的一些理解的主要内容,如果未能解决你的问题,请参考以下文章

numpy 和 pandas 计算中 axis 的一些理解

numpy和pandas axis的差异

pandas数据分析第二天

python数据分析模块:numpy、pandas全解

2020-005 pandas与numpy中的字符串处理

numpy中处理含nan数据的统计函数及其效率