卷积的原理理解:
目前还不是很理解
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]