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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

学习笔记——Numpy基本操作(二)

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记——Numpy基本操作(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為了方便我把本文介紹的一些函數全部列舉了
數學函數
三角函數:sin()、cos()、tan()
numpy.around()
numpy.floor()
numpy.ceil()


算術函數
加減乘除: add(),subtract(),multiply() 和 divide()
numpy.reciprocal()
numpy.power()
numpy.mod()
numpy.remainder()


統計函數
numpy.amin() 和 numpy.amax()
numpy.median()
numpy.mean()
標準差和方差:np.std和np.var numpy.sort()


排序、條件刷選函數
numpy.sort()
numpy.argsort()
numpy.where()


副本和視圖 副本或深拷貝


線性代數 numpy.dot()
numpy.vdot()
numpy.inner()
numpy.matmul ()
numpy.linalg.det()
numpy.linalg.solve()

文章目錄

  • Numpy 線性代數
  • 持久化
    • 1、h5py
    • 2、cPickle
  • 基本操作
    • NumPy 數學函數
    • NumPy 算術函數
    • NumPy 統計函數
    • NumPy 排序、條件刷選函數
    • NumPy 副本和視圖
    • NumPy 線性代數

Numpy 線性代數

NumPy 提供了線性代數函數庫 linalg,該庫包含了線性代數所需的所有功能,可以看看下面的說明:

函數描述
dot兩個數組的點積,即元素對應相乘
vdot兩個向量的點積
inner兩個數組的內積
matmul兩個數組的矩陣積
determinant數組的行列式
solve求解線性矩陣方程
inv計算矩陣的乘法逆矩陣
  • numpy.dot() 對于兩個一維的數組,計算的是這兩個數組對應下標元素的乘積和(數學上稱之為內積);對于二維數組,計算的是兩個數組的矩陣乘 積;對于多維數組,它的通用計算公式如下,即結果數組中的每個元素都是:數組 a 的最后一維上的所有元素與數組 b 的倒數第二位上的所有元素 的乘積和:dot(a,b)[i,j,k,m] = sum(a[i,j,:]*b[k,:,m])。
  • numpy.vdot() 函數是兩個向量的點積。 如果第一個參數是復數,那么它的 共軛復數會用于計算。 如果參數是多維數組,它會被展開。
  • numpy.inner() 函數返回一維數組的向量內積。對于更高的維度,它返回最 后一個軸上的和的乘積。
  • numpy.matmul 函數返回兩個數組的矩陣乘積。 雖然它返回二維數組的正 常乘積,但如果任一參數的維數大于2,則將其視為存在于最后兩個索引 的矩陣的棧,并進行相應廣播。
  • numpy.linalg.det() 函數計算輸入矩陣的行列式。行列式在線性代數中是非 常有用的值。 它從方陣的對角元素計算。 對于2×2 矩陣,它是左上和右 下元素的乘積與其他兩個的乘積的差。
  • numpy.linalg.solve() 函數給出了矩陣形式的線性方程的解。
  • numpy.linalg.inv() 函數計算矩陣的乘法逆矩陣。
  • 逆矩陣(inverse matrix):設 A 是數域上的一個 n 階矩陣,若在相同數域 上存在另一個 n 階矩陣 B,使得: AB=BA=E ,則我們稱 B 是 A 的逆矩陣, 而 A 則被稱為可逆矩陣。

持久化

1、h5py

一個 HDF5 文件是一種存放兩類對象的容器:dataset 和 group. Dataset 是類似于數
組的數據集,而 group 是類似文件夾一樣的容器,存放 dataset 和其他 group。在使用
h5py 的時候需要牢記一句話:groups 類比詞典,dataset 類比 Numpy 中的數組。

HDF5 的 dataset 雖然與 Numpy 的數組在接口上很相近,但是支持更多對外透明的
存儲特征,如數據壓縮,誤差檢測,分塊傳輸。

詳細文檔:http://docs.h5py.org/en/stable/quick.html

示例:

import numpy as np import h5pyN=1000 def pickle_serialization(): #序列化with h5py.File('data.h5','w') as hf:array = np.random.randn(N,N)group = hf.create_group('group') #group相當于文件夾group.create_dataset('dataset',data=array) #dataset相對于具體文件print('Serialization:{}'.format(array))def pickle_deserialization(): #反序列化with h5py.File('data.h5','r') as hf:for key in hf.keys():group = hf.get(key)for item in group.items():print('after deserialization:{}'.format(group[item[0]]))if __name__ == '__main__':pickle_serialization()pickle_deserialization()

2、cPickle

在 python 中,一般可以使用 pickle 類來進行 python 對象的序列化,而 cPickle 提供了一個更快速簡單的接口,如 python 文檔所說的:“cPickle – A faster pickle”。

cPickle 可以對任意一種類型的 python 對象進行序列化操作,比如 list,dict,甚至是一個類的對象等。而所謂的序列化,我的粗淺的理解就是為了能夠完整的保存并能夠完全可逆的恢復。

詳細文檔:https://docs.python.org/2.2/lib/node61.html

示例:

import pickle import numpy as npN=1000 def pickle_serialization(): #序列化with open('data.pkl','wb') as f:array = np.random.randn(N,N)pickle.dump(array,f)print('Serialization:{}'.format(array))def pickle_deserialization(): #反序列化with open('data.pkl','rb') as f:array = pickle.load(f)print('Deserialization:{}'.format(array))if __name__ == '__main__':pickle_serialization()pickle_deserialization()

基本操作

NumPy 數學函數

1、NumPy 提供了標準的三角函數:sin()、cos()、tan()

注意:三角函數都是使用弧度制

import numpy as npa = np.array([0,30,45,60,90]) print ('不同角度的正弦值:') # 通過乘 pi/180 轉化為弧度 print (np.sin(a*np.pi/180)) print ('') print ('數組中角度的余弦值:') print (np.cos(a*np.pi/180)) print ('') print ('數組中角度的正切值:') print (np.tan(a*np.pi/180))--------------------- 執行結果: 不同角度的正弦值: [0. 0.5 0.70710678 0.8660254 1. ]數組中角度的余弦值: [1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-016.12323400e-17]數組中角度的正切值: [0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+001.63312394e+16]

2、numpy.around() 函數返回指定數字的四舍五入值

import numpy as npa = np.array([1.0,5.55, 123, 0.567, 25.532]) print ('原數組:') print (a) print ('') print ('舍入后:') print (np.around(a))-------------- 執行結果: 原數組: [ 1. 5.55 123. 0.567 25.532]舍入后: [ 1. 6. 123. 1. 26.]

3、numpy.floor() 返回數字的下舍整數

import numpy as npa = np.array([-1.7, 1.5, -0.2, 0.6, 10]) print ('提供的數組:') print (a) print ('') print ('修改后的數組:') print (np.floor(a))----------- 執行結果: 提供的數組: [-1.7 1.5 -0.2 0.6 10. ]修改后的數組: [-2. 1. -1. 0. 10.]

4、numpy.ceil() 返回數字的上入整數

import numpy as npa = np.array([-1.7, 1.5, -0.2, 0.6, 10]) print ('提供的數組:') print (a) print ('') print ('修改后的數組:') print (np.ceil(a))------------------- 執行結果: 提供的數組: [-1.7 1.5 -0.2 0.6 10. ]修改后的數組: [-1. 2. -0. 1. 10.]

NumPy 算術函數

1、NumPy 算術函數包含簡單的加減乘除: add(),subtract(),multiply() 和 divide()

import numpy as np a = np.arange(9, dtype = np.float_).reshape(3,3) print ('第一個數組:') print (a) print ('') print ('第二個數組:') b = np.array([10,10,10]) print (b) print ('') print ('兩個數組相加:') print (np.add(a,b)) print ('') print ('兩個數組相減:') print (np.subtract(a,b)) print ('') print ('兩個數組相乘:') print (np.multiply(a,b)) print ('') print ('兩個數組相除:') print (np.divide(a,b))------------------------- 執行結果: 第一個數組: [[0. 1. 2.][3. 4. 5.][6. 7. 8.]]第二個數組: [10 10 10]兩個數組相加: [[10. 11. 12.][13. 14. 15.][16. 17. 18.]]兩個數組相減: [[-10. -9. -8.][ -7. -6. -5.][ -4. -3. -2.]]兩個數組相乘: [[ 0. 10. 20.][30. 40. 50.][60. 70. 80.]]兩個數組相除: [[0. 0.1 0.2][0.3 0.4 0.5][0.6 0.7 0.8]]

2、numpy.reciprocal() 函數返回參數逐元素的倒數。如 1/4 倒數為 4/1

import numpy as np a = np.array([0.25, 1.33, 1, 100]) print ('我們的數組是:') print (a) print ('') print ('調用 reciprocal 函數:') print (np.reciprocal(a))--------------------- 執行結果: 我們的數組是: [ 0.25 1.33 1. 100. ]調用 reciprocal 函數: [4. 0.7518797 1. 0.01 ]

3、numpy.power() 函數將第一個輸入數組中的元素作為底數,計算它與第二個輸入數組中相應元素的冪

import numpy as np a = np.array([10,100,1000]) print ('我們的數組是;') print (a) print ('') print ('調用 power 函數:') print (np.power(a,2)) print ('') print ('第二個數組:') b = np.array([1,2,3]) print (b) print ('') print ('再次調用 power 函數:') print (np.power(a,b))---------------------- 執行結果: 我們的數組是; [ 10 100 1000]調用 power 函數: [ 100 10000 1000000]第二個數組: [1 2 3]再次調用 power 函數: [ 10 10000 1000000000]

4、numpy.mod() 計算輸入數組中相應元素的相除后的余數。 函數 numpy.remainder() 也產生相同的結果

import numpy as npa = np.array([10,20,30]) b = np.array([3,5,7]) print ('第一個數組:') print (a) print ('') print ('第二個數組:') print (b) print ('') print ('調用 mod() 函數:') print (np.mod(a,b)) print ('') print ('調用 remainder() 函數:') print (np.remainder(a,b))-------------------------------- 執行結果: 第一個數組: [10 20 30]第二個數組: [3 5 7]調用 mod() 函數: [1 0 2]調用 remainder() 函數: [1 0 2]

NumPy 統計函數

1、numpy.amin() 和 numpy.amax()

import numpy as np a = np.array([[3,7,5],[8,4,3],[2,4,9]]) print ('我們的數組是:') print (a) print ('') print ('調用 amin() 函數:') print (np.amin(a,1)) #1 :axis=1軸 print ('') print ('再次調用 amin() 函數:') print (np.amin(a,0)) print ('') print ('調用 amax() 函數:') print (np.amax(a)) print ('') print ('再次調用 amax() 函數:') print (np.amax(a, axis = 0))---------------------------- 執行結果: 我們的數組是: [[3 7 5][8 4 3][2 4 9]]調用 amin() 函數: [3 3 2]再次調用 amin() 函數: [2 4 3]調用 amax() 函數: 9再次調用 amax() 函數: [8 7 9]

2、numpy.median() 函數用于計算數組 a 中元素的中位數(中值)

import numpy as np a = np.array([[30,65,70],[80,95,10],[50,90,60]]) print ('我們的數組是:') print (a) print ('') print ('調用 median() 函數:') print (np.median(a)) print ('') print ('沿軸 0 調用 median() 函數:') print (np.median(a, axis = 0)) print ('') print ('沿軸 1 調用 median() 函數:') print (np.median(a, axis = 1))---------------------------- 執行結果: 我們的數組是: [[30 65 70][80 95 10][50 90 60]]調用 median() 函數: 65.0沿軸 0 調用 median() 函數: [50. 90. 60.]沿軸 1 調用 median() 函數: [65. 80. 60.]

3、numpy.mean() 函數返回數組中元素的算術平均值。 如果提供了軸,則沿其計算

import numpy as np a = np.array([[1,2,3],[3,4,5],[4,5,6]]) print ('我們的數組是:') print (a) print ('') print ('調用 mean() 函數:') print (np.mean(a)) print ('') print ('沿軸 0 調用 mean() 函數:') print (np.mean(a, axis = 0)) print ('') print ('沿軸 1 調用 mean() 函數:') print (np.mean(a, axis = 1))------------------------ 執行結果: 我們的數組是: [[1 2 3][3 4 5][4 5 6]]調用 mean() 函數: 3.6666666666666665沿軸 0 調用 mean() 函數: [2.66666667 3.66666667 4.66666667]沿軸 1 調用 mean() 函數: [2. 4. 5.]

4、標準差和方差

import numpy as np print (np.std([1,2,3,4])) print (np.var([1,2,3,4]))------------------------------ 執行結果: 1.118033988749895 1.25

NumPy 排序、條件刷選函數

1、numpy.sort() 函數返回輸入數組的排序副本

import numpy as np a = np.array([[3,7],[9,1]]) print ('我們的數組是:') print (a) print ('') print ('調用 sort() 函數:') print (np.sort(a)) print ('') print ('按列排序:') print (np.sort(a, axis = 0)) print ('') # 在 sort 函數中排序字段 dt = np.dtype([('name', 'S10'),('age', int)]) a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) print ('我們的數組是:') print (a) print ('') print ('按 name 排序:') print (np.sort(a, order = 'name'))----------------------------------- 執行結果: 我們的數組是: [[3 7][9 1]]調用 sort() 函數: [[3 7][1 9]]按列排序: [[3 1][9 7]]我們的數組是: [(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]按 name 排序: [(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]

2、numpy.argsort() 函數返回的是數組值從小到大的索引值

import numpy as np x = np.array([3, 1, 2]) print ('我們的數組是:') print (x) print ('') print ('對 x 調用 argsort() 函數:') y = np.argsort(x) print (y) print ('') print ('以排序后的順序重構原數組:') print (x[y]) print ('') print ('使用循環重構原數組:') for i in y: print (x[i])------------------------------------- 執行結果: 我們的數組是: [3 1 2]對 x 調用 argsort() 函數: [1 2 0]以排序后的順序重構原數組: [1 2 3]使用循環重構原數組: 1 2 3

3、numpy.where() 函數返回輸入數組中滿足給定條件的元素的索引

import numpy as np x = np.arange(9.).reshape(3, 3) print ('我們的數組是:') print (x) print ( '大于 3 的元素的索引:') y = np.where(x > 3) print (y) print ('使用這些索引來獲取滿足條件的元素:') print (x[y])----------------------------------- 執行結果: 我們的數組是: [[0. 1. 2.][3. 4. 5.][6. 7. 8.]] 大于 3 的元素的索引: (array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2])) 使用這些索引來獲取滿足條件的元素: [4. 5. 6. 7. 8.]

NumPy 副本和視圖

1、副本或深拷貝

import numpy as np a = np.array([[10,10], [2,3], [4,5]]) print ('數組 a:') print (a) print ('創建 a 的深層副本:') b = a.copy() print ('數組 b:') print (b) # b 與 a 不共享任何內容 print ('我們能夠寫入 b 來寫入 a 嗎?') print (b is a) print ('修改 b 的內容:') b[0,0] = 100 print ('修改后的數組 b:') print (b) print ('a 保持不變:') print (a)------------------------------ 執行結果: 數組 a: [[10 10][ 2 3][ 4 5]] 創建 a 的深層副本: 數組 b: [[10 10][ 2 3][ 4 5]] 我們能夠寫入 b 來寫入 a 嗎? False 修改 b 的內容: 修改后的數組 b: [[100 10][ 2 3][ 4 5]] a 保持不變: [[10 10][ 2 3][ 4 5]]

2、淺拷貝

import numpy as np a = np.arange(6) print ('我們的數組是:') print (a) print ('調用 id() 函數:') print (id(a)) print ('a 賦值給 b:') b = a print (b) print ('b 擁有相同 id():') print (id(b)) print ('修改 b 的形狀:') b.shape = 3,2 print (b) print ('a 的形狀也修改了:') print (a)----------------------------------------- 執行結果: 我們的數組是: [0 1 2 3 4 5] 調用 id() 函數: 4640120544 a 賦值給 b: [0 1 2 3 4 5] b 擁有相同 id()4640120544 修改 b 的形狀: [[0 1][2 3][4 5]] a 的形狀也修改了: [[0 1][2 3][4 5]]

NumPy 線性代數

NumPy 提供了線性代數函數庫 linalg,該庫包含了線性代數所需的所有功能。

1、numpy.dot() 對于兩個一維的數組,計算的是這兩個數組對應下標元素的乘積和(數學上稱之為內積);對于二維數組,計算的是兩個數組的矩陣乘積

import numpy.matlib import numpy as npa = np.array([[1,2],[3,4]]) b = np.array([[11,12],[13,14]]) print(np.dot(a,b))------------------------------------- 執行結果: [[37 40][85 92]]

2、numpy.vdot() 函數是兩個向量的點積。 如果第一個參數是復數,那么它的共軛復數會用于計算。 如果參數是多維數組,它會被展開

import numpy as np a = np.array([[1,2],[3,4]]) b = np.array([[11,12],[13,14]]) # vdot 將數組展開計算內積 print (np.vdot(a,b))----------------------- 執行結果: 130

3、numpy.inner() 函數返回一維數組的向量內積。對于更高的維度,它返回最后一個軸上的和的乘積

import numpy as np print (np.inner(np.array([1,2,3]),np.array([0,1,0])))--------------------- 執行結果: 2

4、numpy.matmul() 函數返回兩個數組的矩陣乘積

import numpy.matlib import numpy as np a = [[1,0],[0,1]] b = [[4,1],[2,2]] print (np.matmul(a,b))------------------------------ 執行結果: [[4 1][2 2]]

5、numpy.linalg.det() 函數計算輸入矩陣的行列式

import numpy as np a = np.array([[1,2], [3,4]]) print (np.linalg.det(a))--------------------- 執行結果: -2.0000000000000004

6、numpy.linalg.solve() 函數給出了矩陣形式的線性方程的解

import numpy as np a = np.array([[1,1,1],[0,2,5],[2,5,-1]]) print ('數組 a:') print (a)print ('矩陣 b:') b = np.array([[6],[-4],[27]]) print (b)x = np.linalg.solve(a,b) print ('求解') print (x)---------------------------- 執行結果: 數組 a: [[ 1 1 1][ 0 2 5][ 2 5 -1]] 矩陣 b: [[ 6][-4][27]] 求解 [[ 5.][ 3.][-2.]]

總結

以上是生活随笔為你收集整理的学习笔记——Numpy基本操作(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产三级在线免费 | 在线中文字幕一区二区 | 国产精品视频免费播放 | 久久亚洲精精品中文字幕早川悠里 | 亚洲三级影视 | 日韩中文字幕免费观看 | 欧美性猛交ⅹxxx乱大交3 | 91黄色小网站 | 亚洲乱码精品久久久久.. | 久99视频| 性视频网| 中国成熟妇女毛茸茸 | 中文字幕在线播放一区 | 动漫女生光屁股 | 国产又黄又爽又色 | 四虎国产视频 | 国产制服在线 | 亚洲人成免费电影 | 国产精品美女久久 | 亚洲色成人www永久在线观看 | 日本一级一片免费视频 | 夜夜爽爽 | 人妖天堂狠狠ts人妖天堂狠狠 | 成人影片网址 | 天天艹夜夜 | 免费的黄色av | 2021天天操| 久久五月网 | 日韩成人动漫在线观看 | 中文字幕在线播放一区 | 激情国产精品 | 日本一区二区三区在线看 | 爱如潮水3免费观看日本高清 | 精品无码人妻一区二区三区 | 国产一及片 | 欧美日本三级 | 国产三级在线观看 | 美女操出白浆 | 青青视频免费看 | 人人干网站| 国产午夜福利100集发布 | 蜜桃成人无码区免费视频网站 | 91九色丨porny丨肉丝 | av日韩一区 | 九九热视频在线 | 香蕉av一区二区三区 | 国产女人18毛片水18精 | 97人人视频 | 操人视频免费 | 亚洲欧洲在线看 | 九九热在线播放 | 日韩中文字幕av在线 | 国产又大又粗又爽的毛片 | 一级特黄a大片免费 | 777色婷婷 | www婷婷av久久久影片 | 中文字幕视频在线 | 欧美日韩一二区 | 四虎影视免费 | 欧美精品一区二区成人 | 欧美一级色图 | 国产精品久久久久久免费观看 | 亚洲国产激情 | 欧美在线观看免费高清 | 成人黄色在线播放 | 国产成人一区二区三区电影 | www..99热| 美女视频久久 | 影音先锋久久 | 制服.丝袜.亚洲.中文.综合懂色 | 女人脱下裤子让男人桶 | 中文字幕第 | 成人在线播放网站 | 视频在线观看一区二区三区 | 极品美女一区二区三区 | 天堂在线观看免费视频 | 91美女在线 | 国产精品亲子伦对白 | 亚洲国产精品成人综合久久久 | 华丽的外出在线 | 精品在线观看一区二区 | 在线观看99 | 全部免费毛片在线播放 | 涩涩屋污 | 欧美日韩电影一区 | 日本不卡一区二区三区在线观看 | 国产成人亚洲精品自产在线 | 午夜视频福利网站 | 99精品国产成人一区二区 | 久久久亚洲欧洲 | 午夜精品福利一区二区 | 国产精品久久久久久久久久久不卡 | 日一日干一干 | 国产精品99久久久久久久久久久久 | 中文字幕av免费 | 免费在线观看视频 | 欧美热热 | 欧美精品一二 | 国产免费无遮挡 |