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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Numpy库入门

發布時間:2023/12/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Numpy库入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據的維度

維度:一組數據的組織形式

一維數據

  一維數據由對等關系的有序或無序數據構成,采用線性方式組織

列表和數組:一組數據的有序結構

列表:數據類型可以不同3.1413, 'pi', 3.1404, [3.1401, 3.1349], '3.1376'數組:數據類型相同3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376

二維數據

  二維數據由多個一維數據構成,是一維數據的組合形式

  表格是典型的二維數據其中,表頭是二維數據的一部分

多維數據

  多維數據由一維或二維數據在新維度上擴展形成

高維數據

  高維數據僅利用最基本的二元關系展示數據間的復雜結構

{"firstName":"Tian","lastName" :"Song","adress" :{"streetAddr":"中關村南大街5號","city" :"北京市","zipcode" :"100081"},"prof" :["Computer System", "Security"] }

數據維度的Python表示

一維數據:列表和集合類型

[3.1398,?3.1349,?3.1376]?有序 {3.1398,?3.1349,?3.1376}?無序

二維數據:列表類型

[?[3.1398,?3.1349,?3.1376], [3.1413,?3.1404,?3.1401]?]

多維數據:列表類型

高維數據:字典類型 或數據表示格式

dict = {"firstName":"Tian","lastName" :"Song",}

Numpy是什么

  NumPy(Numerical Python的縮寫)是一個開源的Python科學計算庫。使用NumPy,就可以很自然地使用數組和矩陣。NumPy包含很多實用的數學函數,涵蓋線性代數運算、傅里葉變換和隨機數生成等功能。如果你的系統中已經裝有LAPACK,NumPy的線性代數模塊會調用它,否則NumPy將使用自己實現的庫函數。LAPACK是一個著名的數值計算庫,最初是用ortran寫成的,Matlab同樣也需要調用它。從某種意義上講,NumPy可以取代Matlab和Mathematica的部分功能,并且允許用戶進行快速的交互式原型設計。

  NumPy是一個開源的Python科學計算基礎庫,包含:

  • 一個強大的N維數組對象 ndarray
  • 廣播功能函數
  • 整合C/C++/Fortran代碼的工具
  • 線性代數、傅里葉變換、隨機數生成等功能

  NumPy是SciPy、Pandas等數據處理或科學計算庫的基礎

為什么使用Numpy

  對于同樣的數值計算任務,使用NumPy要比直接編寫Python代碼便捷得多。這是因為NumPy能夠直接對數組和矩陣進行操作,可以省略很多循環語句,其眾多的數學函數也會讓編寫代碼的工作輕松許多。NumPy的底層算法在設計時就有著優異的性能,并且經受住了時間的考驗。NumPy是開源的,這意味著使用NumPy可以享受到開源帶來的所有益處。價格低到了極限——免費。雖然NumPy本身不能用來繪圖,但是Matplotlib和NumPy兩者完美地結合在一起,其繪圖能力可與Matlab相媲美。

Numpy的數組對象:ndarry

  為了更好的進行科學計算,需要理解numpy的構成原理以及其中最關鍵的對象ndarry。

N維數組對象:ndarray

Python已有列表類型,為什么需要一個數組對象(類型)?

通過一個實例進行上述問題的分析:

例:計算A^2+B^3

在python中計算

# calculae A^2+B^3def pySum():a = [0, 1, 2, 3, 4]b = [9, 8, 7, 6, 5]c = []for i in range(len(a)):c.append(a[i]**2 + b[i]**3)return c print(pySum())# 輸出結果 [729, 513, 347, 225, 141]

在引入numpy之后計算

# calculae A^2+B^3 numpy import numpy as np # AB屬于同一維度時,可以直接運算,否則會報錯 def npSum():a = np.array([0, 1, 2, 3, 4])b = np.array([9, 8, 7, 6, 5])c = a**2 + b**3return c print(npSum())# 輸出結果 [729 513 347 225 141]

通過上述兩種運算方式的比較,可以得出所提問題的解:

  • 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據
  • 設置專門的數組對象,經過優化,可以提升這類應用的運算速度
  • 科學計算中,一個維度所有數據的類型往往相同
  • 數組對象采用相同的數據類型,有助于節省運算和存儲空間

ndarray是一個多維數組對象,由兩部分構成:

  • 實際的數據
  • 描述這些數據的元數據(數據維度、數據類型等)

  ndarray數組一般要求所有元素類型相同(同質),數組下標從0開始

ndarray實例

  ndarry中兩個重要的概念:軸(axis): 保存數據的維度;秩(rank):軸的數量

# ndarrayimport numpy as np # ndarray在程序中的別名是 array # np.array()生成一個ndarray數組 a = np.array([[1, 2, 3],[4, 5, 6]]) b = np.array([7, 8, 9]) # np.array()輸出成[]形式,元素由空格分割 print(a) # 輸出結果 [[1 2 3][4 5 6]] print(b) # 輸出結果 [7 8 9]

ndarray對象的屬性

屬性說明
.ndim秩,即軸的數量或維度的數量
.shapendarray對象的尺度,對于矩陣,n行m列
.sizendarray對象元素的個數,相當于.shape中n*m的值? ? ? ? ? ? ? ??
.dtypendarray對象的元素類型
.itemsize? ? ? ? ? ??ndarray對象中每個元素的大小,以字節為單位

元素屬性實例

import numpy as np a = np.array([[1, 2, 3],[4, 5, 6]])print(a.ndim) # 2 print(a.shape) # (2,3) print(a.size) # 6 print(a.dtype) # int32 print(a.itemsize) # 4

ndarry數組的元素類型

ndarray的元素類型(1)?(表格在Word210%顯示下截圖)

ndarray的元素類型(2)?

ndarray的元素類型(3)?

ndarray為什么要支持這么多種元素類型?

  • 對比:Python語法僅支持整數、浮點數和復數3種類型
  • 科學計算涉及數據較多,對存儲和性能都有較高要求
  • 對元素類型精細定義,有助于NumPy合理使用存儲空間并優化性能
  • 對元素類型精細定義,有助于程序員對程序規模有合理評估

非同質ndarray對象無法有效發揮NumPy優勢,盡量避免使用,實例如下

# ndarray非同質對象 import numpy as npx = np.array([[0,1],[2,3,4]]) print(x.shape) # (2,) print(x.dtype) # object print(x.size) # 2 print(x.ndim) # 1 print(x.itemsize) # 8 y = np.array([[0,1],[2,3]]) print(y.shape) # (2,2) print(y.dtype) # int32 print(y.size) # 4 print(y.ndim) # 2 print(y.itemsize) # 4

ndarry數組的變換ndarry數組的創建?

  • 從Python中的列表、元組等類型創建ndarray數組
  • 使用NumPy中函數創建ndarray數組,如:arange,?ones,?zeros等

?具體用法如下

# 創建numpy數組 import numpy as npx = np.arange(10) print(x) # 輸出結果 [0 1 2 3 4 5 6 7 8 9]x = np.ones((3,6)) print(x) # 輸出結果 [[1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1.]]x = np.zeros((3,6)) print(x) # 輸出結果 [[0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0.]]x = np.ones((2,3,4)) print(x) # 輸出結果 [[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]][[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]]x = np.eye(5) print(x) # 輸出結果 [[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 1. 0. 0.][0. 0. 0. 1. 0.][0. 0. 0. 0. 1.]]

?具體用法如下

# 創建numpy數組import numpy as npx = np.eye(5) print(x) # 輸出結果 [[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 1. 0. 0.][0. 0. 0. 1. 0.][0. 0. 0. 0. 1.]]y = np.ones_like(x) print(y) # 輸出結果 [[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]]y = np.zeros_like(x) print(y) # 輸出結果 [[0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.]]y = np.full_like(x,5) print(y) # 輸出結果 [[5. 5. 5. 5. 5.][5. 5. 5. 5. 5.][5. 5. 5. 5. 5.][5. 5. 5. 5. 5.][5. 5. 5. 5. 5.]]

?具體用法如下

import numpy as np a = np.linspace(1, 10, 4) print(a) # 輸出結果 [ 1. 4. 7. 10.]b = np.linspace(1, 10, 4, endpoint=False) # 不包含最后一個元素10,分成5份 print(b) # 輸出結果 [1. 3.25 5.5 7.75]c = np.concatenate((a, b)) print(c) # 輸出結果 [ 1. 4. 7. 10. 1. 3.25 5.5 7.75]
  • 從字節流(raw?bytes)中創建ndarray數組
  • 從文件中讀取特定格式,創建ndarray數組

ndarray數組的變換

  對于創建后的ndarray數組,可以對其進行維度變換和元素類型變換

ndarray數組的維度變換

方法

說明

.reshape(shape)

不改變數組元素,返回一個shape形狀的數組,原數組不變

.resize(shape)

與.reshape()功能一致,但修改原數組

.swapaxes(ax1,ax2)

將數組n個維度中兩個維度進行調換

.flatten()

對數組進行降維,返回折疊后的一維數組,原數組不變

實例如下

# numpy數組變化import numpy as npa = np.ones((2,3,4)) print(a) # 輸出結果 [[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]][[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]]b = a.reshape((3,8)) print(b) # 輸出結果 [[1. 1. 1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1. 1. 1.][1. 1. 1. 1. 1. 1. 1. 1.]]

ndarray數組的類型變換

# numpy數組元素類型變化import numpy as npa = np.ones((2,3), dtype=np.int) print(a) # 輸出結果 [[1 1 1][1 1 1]]b = a.astype(np.float) print(b) # 輸出結果 [[1. 1. 1.][1. 1. 1.]]

ndarry數組的操作

# numpy數組的操作import numpy as np a = np.arange(24).reshape(2,3,4) print(a) # 輸出結果 [[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]]print(a[1,2,3]) # 23 print(a[0,1,2]) # 6 print(a[-1,-2,-3]) # 17

數組的切片

print(a[:,1,-3]) # [ 5 17]print(a[:,1:3,:]) # 1:3 左閉右開,包含1,不包含3 # 輸出結果 [[[ 4 5 6 7][ 8 9 10 11]][[16 17 18 19][20 21 22 23]]]print(a[:,:,::2]) # 輸出結果 [[[ 0 2][ 4 6][ 8 10]][[12 14][16 18][20 22]]]

ndarry數組的運算

數組與標量之間的運算

# numpy數組的運算import numpy as np a = np.arange(24).reshape(2,3,4)print(a.mean()) # 11.5 a = a/a.mean() print(a) # 輸出結果 [[[0. 0.08695652 0.17391304 0.26086957][0.34782609 0.43478261 0.52173913 0.60869565][0.69565217 0.7826087 0.86956522 0.95652174]][[1.04347826 1.13043478 1.2173913 1.30434783][1.39130435 1.47826087 1.56521739 1.65217391][1.73913043 1.82608696 1.91304348 2. ]]]

Numpy的運算函數

NumPy一元函數

?

?NumPy二元函數

轉載于:https://www.cnblogs.com/Robin5/p/11479665.html

總結

以上是生活随笔為你收集整理的Numpy库入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 五月婷婷激情四射 | 久久久免费av | 日韩精品电影网 | 欧美人与性动交α欧美片 | 91久久久久久 | 国产激情一区二区三区 | 亚洲调教 | 午夜精品导航 | 秋霞福利网| 香蕉黄色网| www.youjizz国产 | 精品久久久久久久久久久 | 一级片视频在线观看 | 国产黄色高清 | 熟妇五十路六十路息与子 | 玖玖在线视频 | 在线免费观看av网址 | 色汉综合 | 国产又爽又黄的视频 | 黄页视频在线观看 | 男女洗澡互摸私密部位视频 | 色综合天天综合网天天狠天天 | 色视频在线看 | 免费黄色高清视频 | 日韩欧美一二三区 | 男人插女人视频网站 | 久久成人乱码欧美精品一区二区 | 久色免费视频 | 亚洲 小说 欧美 激情 另类 | 久久精品99国产精 | 女人18毛片水真多 | 国产a视频免费观看 | 午夜精品福利视频 | 在线一区二区不卡 | 亚洲激情视频一区 | 日韩av无码一区二区三区不卡 | 国产操 | 绿帽人妻精品一区二区 | 波多野结衣一区二区三区高清 | 国产视频在线播放 | 日韩在线观看免费全 | √天堂中文官网8在线 | 欧美黑人精品一区二区 | 久久国产视频一区 | 国产无遮挡18禁无码网站不卡 | 国产欧美一区二区在线 | 中文字幕一区二区三区免费 | 久久亚洲综合网 | 亚洲免费精品 | 婷婷激情网站 | 手机看片日韩 | 日本精品视频网站 | 一区二区激情视频 | 青青草在线免费视频 | 欧美成人性生活 | 老鸭窝成人 | 国产福利一区二区视频 | 日韩人妻无码精品综合区 | 亚洲成人黄色影院 | 亚洲av无码一区二区三区观看 | 最近免费中文字幕 | 日本少妇吞精囗交视频 | 日日干av | 黄色片在线免费 | 国产在线传媒 | 欧美视频 | 国产一区在线免费 | 久久成人午夜 | 国产在线黄 | 激情五月开心婷婷 | 久久久久久久久99精品 | 国产精品中文久久久久久 | 91女人18毛片水多国产 | 看污网站 | 日本亚洲高清 | 二区三区免费 | 久热精品免费视频 | 日韩一中文字幕 | 欧美一区亚洲一区 | 中文字幕丰满孑伦无码专区 | 免费一级欧美片在线播放 | 亚洲三级国产 | 1024久久| 污黄网站在线观看 | 亚洲欧洲一区二区三区 | 女人裸体无遮挡 | 一区二区三区在线免费观看 | 中文字幕在线视频日韩 | 精品久久久久久久久久 | 妖精视频一区二区 | 国产精品久久国产精品 | 中文字幕女同女同女同 | 久久九精品| 99re这里只有精品在线 | 香港一级纯黄大片 | 欧美一级片黄色 | 91美女在线观看 | 色综合中文网 | 久久国产精品电影 |