numpy基礎屬性方法隨機整理(六)--- 數組卷積 np.convolve(arr, 卷積核arr_core, 'valid'/'full'..)

卷積的原理理解:

目前還不是很理解

N=3
* * * (標*的爲有效均值)
A B C D E F G
0 0 a b c d e 0 0
—— > [1/3 1/3 1/3]


  ------
     ------
         ------
            -------
                -------

D = (b+c+d)/3 = [b c d]x[1/3 1/3 1/3]

Point:
numpy.convolve(closing_prices, 卷積核, ‘valid‘)
卷積核 爲權重數組的逆序數組
c = np.convolve(a, b[::-1], ‘full’) # 卷積後size

c = np.convolve(a, b, 'full')  #  卷積後size : 
c.size = a.size + b.size - 1

import os
import sys
import numpy as np

def main(argc, argv, envp):
    N = 5
    a = np.arange(1,11)
    b = np.ones(N) / N               # 權重b相等, 等權
    print(a,b, sep='\n')

    c = np.convolve(a, b, 'full')
    print('等權非逆序權重:', '\n',c)
    d = np.convolve(a,b[::-1], 'valid')  # 等權順/逆序卷積相同
    print('等權逆序權重:', '\n',d)
    print()
    print(a.size, b.size, c.size, d.size, sep = ' | ')
    print()
    b_ = np.array([11,9,3,6,4]) / 15  # 權重b不相等,不等權
    d_ = np.convolve(a, b_, 'valid')
    print('非等權非逆序權重:', '\n', d_)
    d_ = np.convolve(a, b_[::-1], 'valid')   # 權重逆序 
    print('非等權逆序權重:', '\n', d_)

    return 0

if __name__ == '__main__':
    sys.exit(main(len(sys.argv),sys.argv,os.environ))

----------
output:
    [ 1  2  3  4  5  6  7  8  9 10]
    [ 0.2  0.2  0.2  0.2  0.2]
    等權非逆序權重: 
     [ 0.2  0.6  1.2  2.   3.   4.   5.   6.   7.   8.   6.8  5.4  3.8  2. ]
    等權逆序權重: 
     [ 3.  4.  5.  6.  7.  8.]

    10 | 5 | 14 | 6

    非等權非逆序權重: 
     [  7.73333333   9.93333333  12.13333333  14.33333333  16.53333333
      18.73333333]
    非等權逆序權重: 
     [  5.46666667   7.66666667   9.86666667  12.06666667  14.26666667
      16.46666667]
    [Finished in 1.1s]  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章