numpy基础(part5)--卷积
生活随笔
收集整理的這篇文章主要介紹了
numpy基础(part5)--卷积
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鄙人學習筆記,這個筆記以例子為主。
開發工具:Spyder
卷積convolve
卷積可以解決類似效果累積這種問題。比如,12月15日數據和14日、13日、12日….等前些天的數據都有關系,這時則可以用卷積。
- 卷積的計算過程
設有數組a和卷積核數組b:
a = [1, 2, 3, 4, 5] b = [8, 7, 6]使用b作為卷積核數組對a數組執行卷積運算的過程如下:
完全卷積:卷積核數組中只要有一個開始生效,就可以開始得到結果。
同維卷積:卷積核的中心元素(7)開始生效時,就是同維卷積結果的開始,卷積核的中心元素(7)最后生效得到的數值,就是同維卷積結果的結束。同維卷積得到結果中元素的個數和原數組中元素的個數相等。[故,若要得到同維卷積結果,則卷積核數組只能含有奇數個元素,且同維卷積的結果和卷積核的中心元素大小關系最大]
有效卷積:卷積核數組中,必須所有元素均生效,才開始得到結果。
PS:卷積核數組有一個不成文的規定,就是:其元素要對稱,比如,可以設置為:[1 2 3 2 1].
相關函數:
c = numpy.convolve(a, b, “卷積類型”)- 例子
代碼:
# -*- coding: utf-8 -*-import sys import numpy as np import datetime as dt import matplotlib.pyplot as mp import matplotlib.dates as md#sys.path.append("C:\\Users\\goatbishop\\Desktop\\data") #print(sys.path[-1])def time2time(yt):yt = str(yt, encoding='utf-8')nt = dt.datetime.strptime(yt, '%Y/%m/%d').date()t = nt.strftime('%Y-%m-%d')return tdates, AQI, PM25 = np.loadtxt(r'C:\Users\goatbishop\Desktop\data\data01.csv',delimiter = ',',usecols = tuple(range(3)),unpack = True,skiprows=1,dtype = 'M8[D], f8, f8',converters = {0:time2time})print(dates.shape) print(dates, dates.dtype)dates = dates.astype(md.datetime.datetime) kernel = np.ones(3)/3 AQI_2 = np.convolve(AQI, kernel, 'valid') print(AQI_2, AQI_2.shape)mp.figure("Figure AQI", facecolor='lightgray' )mp.title("AQI Sequence Diagrams", fontsize = 16) mp.xlabel("Date", fontsize = 14) mp.ylabel("AQI", fontsize = 14) mp.grid(linestyle = ":") mp.plot(dates, AQI, color = 'dodgerblue', linestyle = '--', label = "AQI")mp.plot(dates[2:], AQI_2, color = 'r', linestyle = ':', linewidth = 6,label = "AQI(3)")ax = mp.gca() ax.xaxis.set_major_locator(md.WeekdayLocator(byweekday=md.SU)) ax.xaxis.set_major_formatter(md.DateFormatter('%d %b %Y')) ax.xaxis.set_minor_locator(md.DayLocator()) mp.legend(loc = 0)mp.show()結果:
總結
以上是生活随笔為你收集整理的numpy基础(part5)--卷积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel乘法函数
- 下一篇: numpy基础(part6)--协方差与