日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

numpy基础(part5)--卷积

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)--卷积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。