Python 科學計算庫 Numpy介紹和使用

2021-08-21 01:50:41 字數 3713 閱讀 4033

(1)對於同樣的數值計算任務,由於numpy能夠直接對陣列和矩陣進行操作,可以省略很多迴圈語句使用numpy要比直接編寫python**便捷得多;

(2)numpy中陣列的儲存效率和輸入輸出效能均遠遠優於python中等價的基 本資料結構;

(3)numpy的大部分**都是用c語言寫成的,這使得numpy比純python代 碼高效得多。

(1)numpy的全名為numeric python,是乙個開源的python科學計算庫,它包括:

• 乙個強大的n維陣列物件ndrray;

• 比較成熟的函式庫;

• 用於整合c/c++和fortran**的工具包;

• 實用的線性代數、傅利葉變換和隨機數生成函式

(2)numpy支援高維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。

1、普通python方法求和

a = 

b =

c =

for i in range

(3):

print(c)

2、用numpy求和
import numpy as np

defnumpysun

(n):

''' np.arange(start,end,step,type)

start:開始位置

end:結束位置

step:步長

type:numpy陣列的資料型別

:param n:

:return:

'''a = np.arange(0,n,1,np.int64) ** 2

b = np.arange(0,n,1,np.int64) ** 3

c = a + b

return c

c = numpysun(1292)

print(c)

3、 普通python和numpy效率對比
import numpy as np

from datetime import datetime

# import time

defcreate

(n,m):

a =

for i in range(n):

return a

defpythonsum

(n):

a = create(n,2)

b = create(n,3)

c =

for i in range(n):

return c

start = datetime.now()

result = pythonsum(100000)

totaltime = datetime.now() - start

print(result)

print(totaltime.microseconds)

defnumpy1

(n):

a = np.arange(0,n,1,np.int64) ** 2

b = np.arange(0,n,1,np.int64) ** 3

c = a+b

return c

start1 = datetime.now()

result2 = numpy1(100000)

totaltime = datetime.now() - start1

print(result2)

print(totaltime.microseconds)

標準python的缺陷:

標準安裝的python中用列表(list)可以用來當作陣列使用,但是列表中所儲存的是物件 (任意物件)的指標。對於數值運算來說這種結構顯然比較浪費記憶體和cpu計算時間。

python還提供了乙個array模組,它直接儲存數值。但是由於它只支援一維陣列,也沒有各種運算函式,因此也不適合做數值運算。

numpy提供了以下物件,解決標準python的不足:

•ndarray( n-dimensional array object)n維陣列(簡稱陣列)物件,儲存單一數

據型別的n維陣列

•ufunc( universal function object)通用函式物件,對陣列進行處理的函式。

import numpy as np

# 建立numpy資料的幾種方法

'''1、arange()

np.arange(start,end,step,type)

start:開始位置

end:結束位置

step:步長

type:numpy陣列的資料型別

:param n:

:return:

'''a = np.arange(5)

# print(a)

# 檢視numpy陣列的資料型別

print(a.dtype)

'''2、利用python列表建立numpy資料

np.array(list)

list:python 的列表

'''price = [12.5, 5.5, 7.0, 13]

price2 = np.array(price)

print(price2)

print(price2.dtype)

'''3、建立乙個從a-b範圍內取n個點等間距分布的陣列

a = 0

b = 10

n = 4

np.linspace(start,end,points,endpoint)

start:開始

end:結束

points:在start和end之間取的點的個數

endpoint: 建立出的陣列是否包含end結束位置,取值為true/false

'''c = np.linspace(0, 10, 4, endpoint=false)

print(c)

# 檢視陣列的形狀 shape

# (4,) 代表一維

print(c.shape)

d2 = np.array([[1,2,3,4],

[5,6,7,8]])

print(d2.shape)

'''建立二維陣列

'''d2 = np.array([[1,2,3,4],

[5,6,7,8]])

d2_1 = np.array([np.arange(5),np.arange(5,10)])

print(d2_1)

建立特殊的陣列:

# 1、例如:建立值全為0的2行2列和2行一維陣列

zeros = np.zeros((2, 2))

zeros1 = np.zeros((2,))

print(zeros)

print(zeros1)

# 2、建立3行3列值全為1的陣列

ones = np.ones((3, 3))

print(ones)

# 3、建立乙個多維的值全為指定某個值得陣列

# 例如:2行2列,值全為10的陣列

full = np.full((2, 2), 10)

print(full)

# 4、建立對角矩陣 注意:對角矩陣必須是方陣,即行數和列數相等

eye = np.eye(2)

print(eye)

# 將方陣的對角線上的1向右上角或者是左下角移動

eye2 = np.eye(3,k=1)

print(eye2)

python科學計算庫安裝

python科學計算相關的庫包括numpy,scipy,matplotlib等,但是自己安裝比較不容易,倒不是安裝過程有多難,而是會出現各種各樣的問題,現在做一記錄 安裝順序numpy scipy matplotlib,電腦環境 win7 64位旗艦版,python 3.5x 注意 版本問題,num...

python科學計算庫(四)Seaborn

matplotlib雖然已經是比較優秀的繪相簿了,但是它有個今人頭疼的問題,那就是api使用過於複雜,它裡面有上千個函式和引數,屬於典型的那種可以用它做任何事,卻無從下手。seaborn基於 matplotlib核心庫進行了更高階的api封裝,可以輕鬆地畫出更漂亮的圖形,而seaborn的漂亮主要體...

python 安裝科學計算庫 新手教學

用python來進行資料分析以及機器學習演算法的實現變得越來越流行,而要我們必不可少地需要安裝第三方的科學計算庫如numpy mkl numpy的改進版 scipy,panda,matplotlib,sklearn等。如果你打算自己手動安裝這些庫,你必須先知道這些庫的安裝間有依賴關係,例如你在裝ma...