Numpy

数组的轴

这是一个非常重要的概念,也是 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 个轴的数据将会被折叠或聚合到一起。

 np.newaxis:

给数组增加维度

im_pillow_c1 = im_pillow_c1[:, :, np.newaxis]
im_pillow_c1.shape
输出:(116, 318, 1)

只不过 PyTorch 中的函数名 unsqueeze(), TensorFlow 的话是与 NumPy 有相同的名字,直接使用 tf.newaxis 就可以了。

 

 

Numpy常用函数总结

 

posted @ 2022-02-17 13:49  骆驼_Camle  阅读(128)  评论(0)    收藏  举报