美文网首页
numpy 中的一些函数用法

numpy 中的一些函数用法

作者: 此间不留白 | 来源:发表于2019-09-24 21:24 被阅读0次
    • 对于一个一维数组Z,其以下表达式的结果如下:
    import numpy as np
    Z = np.arange(10)
    Z = Z**Z
    

    用以上代码生成的Z数组为[0,1,2,3,4,5,6,7,8,9],而Z**Z的内部计算方式为 [0^0,1^1,2^2,……9^9].

    • 对于一个一维数组,以下表达式的计算结果如下:
    Z =  np.arange(10)
    print(2<<Z>>2)
    

    >>>[ 0 1 2 4 8 16 32 64 128 256]

    其计算过程可以简单描述为,[2^(0+1)/4,2^(1+1)/4 …… 2^(9+1)/4]
    即 2<<Z 表示为[2^(0+1),2^(1+1) …… 2^(9+1)],而Z>>2 就是简单的每个元素除以4了。

    • 复数域和实数域中sqrt(-1)的差别
      有如下表达式,其计算结果分别如下所示:
    print(np.sqrt(-1))  #输出结果为Nan
    print(np.emath.sqrt(-1)) #输出结果为1j
    

    >>> nan
    >>>1j

    • np.add.reduce()的详细计算过程可以由以下代码实现,reduce的作用,是把add函数作用于矩阵a的每一维的对应位置上的元素相加,计算这些元素。
    import numpy as np
    a = np.arange(45).reshape(3,3,5)
    print(a)
    b = np.add.reduce(a)
    print(b,'\n')
    c = []
    for j in range(3):
        d = []
        for i in range(5):
            print(a[:,j,i],'\t',sum(a[:,j,i]))
            d.append(sum(a[:,j,i]))
        c.append(d)
    print(np.array(c))
    

    详细的计算过程,如下输出结果所示:

    >>>[[[ 0 1 2 3 4]
    [ 5 6 7 8 9]
    [10 11 12 13 14]],
    [[15 16 17 18 19]
    [20 21 22 23 24]
    [25 26 27 28 29]],
    [[30 31 32 33 34]
    [35 36 37 38 39]
    [40 41 42 43 44]]],
    计算结果:
    [[45 48 51 54 57]
    [60 63 66 69 72]
    [75 78 81 84 87]]
    计算过程:
    [ 0 15 30] 45
    [ 1 16 31] 48
    [ 2 17 32] 51
    [ 3 18 33] 54
    [ 4 19 34] 57
    [ 5 20 35] 60
    [ 6 21 36] 63
    [ 7 22 37] 66
    [ 8 23 38] 69
    [ 9 24 39] 72
    [10 25 40] 75
    [11 26 41] 78
    [12 27 42] 81
    [13 28 43] 84
    [14 29 44] 87
    最后输出:
    [[45 48 51 54 57]
    [60 63 66 69 72]
    [75 78 81 84 87]]

    • 关于求取最大值的说明:
    Z = np.random.random(10)
    print(Z.max())  #向量的最大值
    print(Z.argmax())  #向量最大值的索引
    
    • 关于np.bincount(X,W,minlength)函数,有如下用法:
    1. 不指定权重参数W,np.bincount(X)输出是一个其索引值出现的次数,如下代码所示:
    X = [0,1,3,2,5,6,3,3]
    print(np.bincount(X))
    
    

    运行如上代码,输出结果为:[1,1,1,3,0,1,1],需要注意的是,输出数组的长度比数组中的最大值+1

    1. minlength参数被指定之后,输出数组的长度为minlength,如下代码所示:
    X = [0,2,4,4,2,4,5,6,6]
    print(np.bincount(X,minlength = 10))
    
    

    运行以上代码,输出结果为:[1,0,1,0,3,1,2,0,0,0]

    1. 当weigths参数被指定时,运行结果可以用以下代码详解:
    # 关于np.bincount指定权重向量的用法
    import numpy as np
    X = [1,2,3,4,5,6]
    I = [1,3,9,3,4,1]
    #最大值是9,所以输出F包含10个元素
    #F[0] = 0
    #F[1] = X[I[i=1]] = X[0] + X[6] = 1 + 6 = 7
    #f[2] = 0 ,I中没有出现2
    #F[3] = X[I[i = 3]] = X[1] + X[4]  = 6
    #F[4] = X[I[i = 4]] = X[5] = 5
    #F[5] = 0 I中没有5
    #F[6] = 0 I中没有出现6
    #F[7] = 0 I中没有出现7
    #F[8] = 0 I中没有出现8
    #F[9] = X[I[i=9]] = X[4] = 3  
    F = np.bincount(I,X)
    print(F)
    

    >>>[0. 7. 0. 6. 5. 0. 0. 0. 0. 3.]

    相关文章

      网友评论

          本文标题:numpy 中的一些函数用法

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