(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...