美文网首页
Python3学习拾遗2

Python3学习拾遗2

作者: 韧心222 | 来源:发表于2021-12-07 17:41 被阅读0次

    Python3 学习拾遗2

    今天观看李沐大神的深度学习视频,突然把以前经常搞混的几个地方弄明白了,所以赶紧记下来。但是感觉和上一篇拾遗距离的时间有点过于久远了,于是干脆再开一篇新的吧。

    1. 有趣的+=

    无论是在Numpy还是在Torch中,常用的a+=ba = a + b其实是有一些不易被人所感知的区别的,其区别在于,第一种方法,不会分配新的内存,而第二种会先将a与b做加法,然后再将其重新分配给一个新的变量名为a的对象。差别代码如下:

    import numpy as np
    
    a = np.array([1, 2, 3])
    b = np.array([2, 2, 2])
    id(a)
    ---------------------
    2473476752944
    

    可以看到a的地址是2473476752944,此时执行如下代码:

    a = a + b
    id(a)
    ---------------------
    2473477562160
    

    可以明显看到a的地址发生了变化,变成了2473477562160,此时,如果再执行如下代码:

    a += b
    id(a)
    ---------------------
    2473477562160
    

    可以看到采用+=的形式以后,a的地址并没有发生变化。

    2.关于axis

    无论是在Numpy、Pandas还是在PyTorch中,都有关于axis的概念,即运算的维度。对于这个概念,我一直有些晕,所以为了防止出错,每次都不得不在电脑上用小规模的数据试验几次,才能搞清楚,今天经过李沐大神一番点拨,终于弄清楚了。

    2.1 定义

    import numpy as np
    x = np.arange(24).reshape(2,3,4)
    ---------------------
    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]]])
    

    可以看到,最后一位数字,表示的是最里面的那个维度的长度,第一位数字,表示的是最外面的那个维度的长度,这样记起来就不容易混淆了。

    2.2 axis

    以sum函数为例,axis就可以认为是消失的那个维度,例如:

    x.sum(axis=0)
    ---------------------
    array([[12, 14, 16, 18],
           [20, 22, 24, 26],
           [28, 30, 32, 34]])
    

    可以看到当执行sum(axis=0)以后,消失的是第一个维度,新的数据的shape变成了(3, 4)
    。因此可以认为:

    axis指定的是消失的维度

    相关文章

      网友评论

          本文标题:Python3学习拾遗2

          本文链接:https://www.haomeiwen.com/subject/ngdjphtx.html