中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中如何使用numpy庫

發布時間:2022-02-23 10:35:50 來源:億速云 閱讀:178 作者:iii 欄目:開發技術

這篇文章主要介紹“python中如何使用numpy庫”,在日常操作中,相信很多人在python中如何使用numpy庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python中如何使用numpy庫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1.Numpy是什么?

NumPy(Numerical Python的縮寫)是一個開源的Python科學計算庫。使用NumPy,就可以很自然地使用數組和矩陣。 NumPy包含很多實用的數學函數,涵蓋線性代數運算、傅里葉變換和隨機數生成等功能。

這個庫的前身是1995年就開始開發的一個用于數組運算的庫。經過了長時間的發展,基本上成了絕大部分Python科學計算的基礎包,當然也包括所有提供Python接口的深度學習框架。

2.為什么使用Numpy?

a)便捷:

對于同樣的數值計算任務,使用NumPy要比直接編寫Python代碼便捷得多。這是因為NumPy能夠直接對數組和矩陣進行操作,可以省略很多循環語句,其眾多的數學函數也會讓編寫代碼的工作輕松許多。

b)性能:

NumPy中數組的存儲效率和輸入輸出性能均遠遠優于Python中等價的基本數據結構(如嵌套的list容器)。其能夠提升的性能是與數組中元素的數目成比例的。對于大型數組的運算,使用NumPy的確很有優勢。對于TB級的大文件,NumPy使用內存映射文件來處理,以達到最優的數據讀寫性能。

c)高效:

NumPy的大部分代碼都是用C語言寫成的,這使得NumPy比純Python代碼高效得多。

當然,NumPy也有其不足之處,由于NumPy使用內存映射文件以達到最優的數據讀寫性能,而內存的大小限制了其對TB級大文件的處理;此外,NumPy數組的通用性不及Python提供的list容器。因此,在科學計算之外的領域,NumPy的優勢也就不那么明顯。

3.Numpy的安裝:

  1. 官網安裝:http://www.numpy.org/。

  2. pip 安裝:pip install numpy。

  3. LFD安裝:針對windows用戶

  4. Anaconda安裝(推薦):Anaconda里面集成了很多關于python科學計算的第三方庫,主要是安裝方便。

4.numpy 基礎:

NumPy的主要對象是同種元素的多維數組。這是一個所有的元素都是一種類型。在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank)。NumPy的數組類被稱作 ndarray(矩陣也叫數組 。通常被稱作數組。

常用的ndarray對象屬性有:

  • ndarray.ndim(數組軸的個數,軸的個數被稱作秩),

  • ndarray.shape(數組的維度。這是一個指示數組在每個維度上大小的整數元組。例如一個n行m列的矩陣,它的shape屬性將是(2,3),這個元組的長度顯然是秩,即維度或者ndim屬性),

  • ndarray.size(數組元素的總個數,等于shape屬性中元組元素的乘積),

  • ndarray.dtype(一個用來描述數組中元素類型的對象,可以通過創造或指定dtype使用標準Python類型。另外NumPy提供它自己的數據類型)。

Numpy的數據類型:

import numpy as np
a = np.dtype(np.int_)     #  np.int64, np.float32 …
print(a)

Numpy內置的特征碼:

int8, int16, int32,int64 可以由字符串’i1’, ‘i2’,’i4’, ‘i8’代替,其余的以此類推。

import numpy as np
a = np.dtype(‘i8’)    # ’f8’, ‘i4’’c16’,’a30’(30個字符的字
# 符串), ‘>i4’…
print (a)

可以指明數據類型在內存中的字節序,’>’表示按大端的方式存儲,’<’表示按小端的方式存儲,’=’表示數據按硬件默認方式存儲。大端或小端存儲只影響數據在底層內存中存儲時字節的存儲順序,在我們實際使用python進行科學計算時,一般不需要考慮該存儲順序。

(推薦微課:python3基礎微課)

5.創建數組并查看其屬性:

(1) 用np.array從python列表和元組創建數組:

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

(2) 用np.arange().reshape()創建數組:

import numpy as np
a = np.arange(10).reshape(2, 5) # 創建2行5列的二維數組,
# 也可以創建三維數組,
# a = np.arange(12).reshape(2,3,2)
print(a)

判斷下列三維數組的shape:

a = np.array([[[1,2,3], [4, 5, 6], [7, 8, 9]]])
b = np.array([[[1,2,3]], [[4, 5, 6]], [[7, 8, 9]]])

6.基本運算:

import numpy as np
a = np.random.random(6)
b = np.random.rand(6)
c = np.random.randn(6)
print(a-b)                    # print(a+b),print(a*c) …
# 二維數組運算
d = np.random.random((2,3))
e = np.random.randn(2, 3)
f = np.random.rand(2,3)
print(d-e)                    # print(d+f),print(e*f) …
print(np.dot(a,b))          #復習矩陣乘法
print(a.dot(b))
# Numpy 隨機數模塊np.random.random, np.random.randn, np.random.rand的比較
(1)rand 生成均勻分布的偽隨機數。分布在(0~1)之間
(2)randn 生成標準正態分布的偽隨機數(均值為0,方差為1)。
import numpy as np
a = np.ones((2,3)) 
b = np.zeros((2,3))
a*=3
b+=a

7.常用函數:

import numpy as np 
a = np.arange(10)
np.where()

8.索引,切片和迭代:

import numpy as np
 a = arange(10)**3
a[2]
a[2:5]
a[:6:2] = -1000
a[ : :-1]
for i in a:
    print i**(1/3.)


# 多維數組的索引
b = np.arange(20).reshape(5,4)
b[2,3]
b[0:5, 1]
b[ : ,1]
b[1:3, : ]
#當少于軸數的索引被提供時,確失的索引被認為是整個切片
b[-1]    #相當于b[-1,:]
# b[i] 中括號中的表達式被當作 i 和一系列 : ,來代表剩下的軸。NumPy也允許你使用“點”像 b[i,...] 。
#點 (…)代表許多產生一個完整的索引元組必要的分號。如果x是
#秩為5的數組(即它有5個軸),那么:x[1,2,…] 等同于 x[1,2,:,:,:],x[…,3] 等同于 x[:,:,:,:,3],x[4,…,5,:] 等同 x[4,:,:,5,:].


三維數組的索引:
c = np.arange(12).reshape(2,3,2)
c[1]
c[2,1]    # 等價于c[2][1]
c[2,1,1]  # 等價于c[2][1][1]


# 通過數組索引
d = np.arange(10)**2
e = np.array ([3, 5, 6])
d[e] = ?


#練習, 用同樣的方法在二維數組中操作。
# 通過布爾數組索引
f = np.arange(12).reshape(3, 4)
g = f>4
print(g)
f [g]

迭代多維數組是就第一個軸而言的:

h = np.arange(12).reshape(3,4)
for i in h:
   print(i)

如果想對每個數組中元素進行運算,我們可以使用flat屬性,該屬性是數組元素的一個迭代器:

for i in h.flat:
print(i)

補充:flatten()的用法:np.flatten()返回一個折疊成一維的數組。但是該函數只能適用于numpy對象,即array或者mat,普通的list列表是不行的。

import numpy as np
a = np.array([[1,2], [3, 4], [5, 6]])

 
a.flatten()
b = np.mat([[1,2,3], [4, 5, 6]])
b.flatten()
c = [[1,2,3], [4, 5, 6]]
c.flatten() ?

想要list達到同樣的效果可以使用列表表達式:

[y for x in a for y in x]

9. 形狀操作:

ravel(),vstack(),hstack(),column_stack,row_stack, stack, split, hsplit, vsplit

import numpy as np


#增加維度
a = np.arange(5)
a[:, np.newaxis]
a[np.newaxis, :]
np.tile([1,2], 2)


#合并
a = np.arange(10).reshape(2,5)
print(a.ravel())
print(a.resize(5,2))
b = np.arange(6).reshape(2,3)
c = np.ones((2,3))
d = np.hstack((b,c))              # hstack:horizontal stack 左右合并
e = np.vstack((b,c))              # vstack: vertical stack 上下合并          
f = np.column_stack((b,c))
g = np.row_stack((b,c))
h = np.stack((b, c), axis=1)      # 按行合并
i = np.stack((b,c), axis=0)       # 按列合并
j = np.concatenate ((b, c, c, b), axis=0)   #多個合并

 
#分割
k = np.hsplit(i, 2)
l = np.vsplit(i, 2)
m = np.split(i, 2, axis=0)
n = np.split(i, 2,axis=1)

 
o = np.array_split(np.arange(10),3)   #不等量分割

10.深拷貝:

import numpy as np
a = np.arange (4)
b = a
c = a
d = b
a[0]=10  a = ? b = ? c= ? d = ?
b = a.copy()
a [0] = 9
b = ?

11.廣播 Broadcasting

廣播是一種強有力的機制,它讓Numpy可以讓不同大小的矩陣在一起進行數學計算。我們常常會有一個小的矩陣和一個大的矩陣,然后我們會需要用小的矩陣對大的矩陣做一些計算。

把一個向量加到矩陣的每一行:

    import numpy as np
    a = np.array ([[1,2,3], [4,5,6], [7,8,9]])
    b = np.array ([10,10,10])
    c = np.tile(b, (4,1))
    d = a + c
    #用廣播機制:
    c = a + b

對兩個數組使用廣播機制要遵守下列規則:

  1. 如果數組的秩不同,使用1來將秩較小的數組進行擴展,直到兩個數組的尺寸的長度都一樣。

  2. 如果兩個數組在某個維度上的長度是一樣的,或者其中一個數組在該維度上長度為1,那么我們就說這兩個數組在該維度上是相容的。

  3. 如果兩個數組在所有維度上都是相容的,他們就能使用廣播。

  4. 如果兩個輸入數組的尺寸不同,那么注意其中較大的那個尺寸。因為廣播之后,兩個數組的尺寸將和那個較大的尺寸一樣。

  5. 在任何一個維度上,如果一個數組的長度為1,另一個數組長度大于1,那么在該維度上,就好像是對第一個數組進行了復制。

到此,關于“python中如何使用numpy庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安岳县| 台江县| 乡宁县| 仁寿县| 双峰县| 潼南县| 桑日县| 麦盖提县| 舟曲县| 普定县| 奉新县| 勃利县| 淳化县| 明溪县| 伊吾县| 临沂市| 定州市| 临武县| 乐至县| 隆化县| 水城县| 宜宾市| 神池县| 南通市| 获嘉县| 文山县| 江油市| 五指山市| 阿鲁科尔沁旗| 治县。| 赤壁市| 鸡东县| 西城区| 麻城市| 额济纳旗| 五台县| 洛隆县| 洛宁县| 塘沽区| 湘乡市| 临泽县|