数组的轴
这是一个非常重要的概念,也是 NumPy 数组中最不好理解的一个概念。它经常出现在 np.sum()、np.max() 这样关键的聚合函数中。我们用这样一个问题引出,同一个函数如何根据轴的不同来获得不同的计算结果呢?比如现在有一个 (4,3) 的矩阵,存放着 4 名同学关于 3 款游戏的评分数据。
>>>interest_score = np.random.randint(10, size=(4, 3)) >>>interest_score array([[4, 7, 5], [4, 2, 5], [7, 2, 4], [1, 2, 4]])
第一个需求是,计算每一款游戏的评分总和。这个问题如何解决呢,我们一起分析一下。数组的轴即数组的维度,它是从 0 开始的。对于我们这个二维数组来说,有两个轴,分别是代表行的 0 轴与代表列的 1 轴。如下图所示。
我们的问题是要计算每一款游戏的评分总和,也就是沿着 0 轴的方向进行求和。所以,我们只需要在求和函数中指定沿着 0 轴的方向求和即可。
>>> np.sum(interest_score, axis=0) array([16, 13, 18])
同理1轴也如此,只需将参数axis = 0 修改为 1 即可
二维数组还是比较好理解的,那多维数据该怎么办呢?你有没有发现,其实当 axis=i 时,就是按照第 i 个轴的方向进行计算的,或者可以理解为第 i 个轴的数据将会被折叠或聚合到一起。