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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

numpy基础(part10)--通用函数

發布時間:2023/12/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy基础(part10)--通用函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,這個筆記以例子為主。
開發工具:Spyder


文章目錄

    • 通用函數
        • 數組的剪裁
        • 數組的壓縮
      • 加法、乘法通用函數
      • 除法通用函數
      • 三角通用函數
        • 合成方波


通用函數

數組的剪裁

  • 語法
# 將調用數組中小于和大于下限和上限的元素替換為下限和上限,返回裁剪后的數組,調 # 用數組保持不變。 ndarray.clip(min=下限, max=上限)
  • 圖示

  • 舉個例子

代碼:

import numpy as np a = np.array([[1, 3, 5], [2, 4, 6],[3, 9, 6]])print(a) print(a.clip(min = 3, max = 6))

結果:

[[1 3 5][2 4 6][3 9 6]] [[3 3 5][3 4 6][3 6 6]]

數組的壓縮

  • 語法
# 返回由調用數組中滿足條件的元素組成的新數組。 ndarray.compress(條件)
  • 例子

代碼:

import numpy as np a = np.array([[1, 3, 5], [2, 4, 6],[3, 9, 6]])print(a) print(a.compress(a % 3 == 0))

結果:


報錯,我們輸入的數組必須是一位數組。

代碼2:

import numpy as np a = np.arange(1, 20)print(a) print(a.compress(a % 3 == 0))

結果2:

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] [ 3 6 9 12 15 18]

備注:and無法進行數組與數組之間的運算。但是我們可以用np.all進行數組之間的與運算。

代碼3:

import numpy as np a = np.arange(1, 20)print(a) print(a.compress(np.all([a % 2 == 0, a % 3 == 0], axis = 0)))

結果3:

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] [ 6 12 18]

加法、乘法通用函數

  • 語法
# 兩數組相加 np.add(a, b)# a數組元素累加和 np.add.reduce(a)# 累加和過程 np.add.accumulate(a)# 外和 np.add.outer([10, 20, 30], a)# 計算所有元素的乘積 np.prod(a) #對于有多個維度的數組可以指定軸 #如axis=1指定計算每一行的乘積。# 返回調用數組中所有元素執行累乘的過程數組。 np.cumprod() np.outer()
  • 例子1(相加、累加和、累加)

代碼:

import numpy as np a = np.arange(1, 7) b = np.arange(5, 11)print('a:', a, '\n', 'b:', b) print('a + b:', np.add(a, b)) print(np.add.reduce(a)) print(np.add.accumulate(a))

結果:

a: [1 2 3 4 5 6] b: [ 5 6 7 8 9 10] a + b: [ 6 8 10 12 14 16] 21 [ 1 3 6 10 15 21]
  • 例子2(外和)

代碼:

import numpy as np a = np.arange(1, 7) print(np.add.outer([10, 20, 30], a))

結果:

[[11 12 13 14 15 16][21 22 23 24 25 26][31 32 33 34 35 36]]
  • 例子3(外積)

代碼:

import numpy as np a = np.arange(1, 7) print(np.outer([10, 20, 30], a))

結果:

[[ 10 20 30 40 50 60][ 20 40 60 80 100 120][ 30 60 90 120 150 180]]
  • 例子4(累乘、累乘和)

代碼:

import numpy as np a = np.arange(1, 7) print(np.prod(a)) print(np.cumprod(a))

結果:

720 [ 1 2 6 24 120 720]

除法通用函數

  • 語法
# a 真除 b (對應位置相除) np.true_divide(a, b)# a 真除 b np.divide(a, b) # a 地板除 b(真除的結果向下取整) np.floor_divide(a, b) np.floor(a / b)# a 天花板除 b(真除的結果向上取整) np.ceil(a / b) # a 截斷除 b (真除的結果直接干掉小數部分) np.trunc(a / b) #四舍五入 np.round(a / b)
  • 例子

代碼:

import numpy as np a = np.array([10, 20, 8, 9, 9]) b = np.array([3, -3, 4, 5, -5]) print(np.divide(a, b)) print(np.floor_divide(a, b)) print(np.ceil(a/b)) print(np.trunc(a/b)) print(np.round(a/b))

結果:

[ 3.33333333 -6.66666667 2. 1.8 -1.8 ] [ 3 -7 2 1 -2] [ 4. -6. 2. 2. -1.] [ 3. -6. 2. 1. -1.] [ 3. -7. 2. 2. -2.]

三角通用函數

  • 語法
numpy.sin()
  • 傅里葉定理

法國科學家傅里葉提出,任何一條周期曲線,無論多么跳躍或不規則,都能表示成一組光滑正弦曲線疊加之和。

合成方波

方波長啥樣?如下圖所示:


一個方波由如下參數的正弦波疊加而成:

曲線疊加的越多,越接近方波。

  • 例子(模擬合成方波)

代碼:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-2*np.pi, 2*np.pi, 1000) y = np.zeros(1000) n = 1000 for i in range(1, n+1):y += 4 / ((2 * i - 1) * np.pi) \* np.sin((2 * i - 1) * x)mp.plot(x, y)mp.show()

結果:

這里,我們將range(1, n + 1)改為range(1, 4),只繪制3條正弦曲線,并合成:

import numpy as np import matplotlib.pyplot as mpx = np.linspace(-2*np.pi, 2*np.pi, 1000) y = np.zeros(1000) n = 1000 for i in range(1, 4):y_temp = 4 / ((2 * i - 1) * np.pi) \* np.sin((2 * i - 1) * x)mp.plot(x, y_temp)y += y_tempmp.plot(x, y, linestyle = '--',linewidth = 4,label = 'Synthetic Wave') mp.legend(loc = 0) mp.show()

圖像:

總結

以上是生活随笔為你收集整理的numpy基础(part10)--通用函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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