python里array函數(python_tang_array_numpy)
在python中存儲集合數據可以選擇多種原生數據類型,包括list,array,tuple,dictionary四種類型.其中list可變性強,可存儲任意內容并且可變,應用范圍廣泛。而在進行科學運算,存儲純數字時,numpy被廣泛應用,可以說基本完全替代了list.那么它們之間有何不同,差距到底有多大,實際過程中應該如何應用呢?
當然,使用實際案例最能說明問題.
運算速度比較
簡單的加減乘除,以10000以內的數字做個比較.
首先是求和
mylist = []
for i in range(1,10001):
mylist.append(i)
# list
from time import time
start = time()
total=sum(mylist)
print(total)
end = time()
print(f"total:{end-start}s")
## 50005000
## total:0.0003197193145751953s
# numpy np.sum
import numpy as np
myarray = np.array(mylist)
start = time()
total = np.sum(myarray)
print(total)
end = time()
print(f"total:{end-start}s")
## 50005000
## total:0.00041031837463378906s
# numpy sum
start = time()
total = sum(myarray)
print(total)
end = time()
print(f"total:{end-start}s")
## 50005000
## total:0.0012726783752441406s
可以看到,在使用求和時原生的數組求和時間為0.0003,而使用numpy的np.sum卻需要0.0004,采用內置的sum求numpy中array的和時耗時最久,為0.001,差不多兩倍的時間了.而這還不包括將list轉換為array的時間,可見在求和上內置的list明顯占據上風.而很多其他文章比較時采用循環的方式當然會慢,但是不符合真實速度.
其次是求積
同樣采用mylist數據作為基礎,再次比較兩者的速度
# list
from time import time
start = time()
total = 1
for i in total:
total *= i
end = time()
print(f"total:{end-start}s")
## 50005000
## total:0.0003197193145751953s
# numpy np.sum
import numpy as np
myarray = np.array(mylist)
start = time()
total = np.prod(myarray)
end = time()
print(f"total:{end-start}s")
## total:0.01838994026184082s
## total:0.000213623046875s
在進行連乘時,由于沒有內置的乘法,只能采用循環的方式進行,不可避免的造成速度的降低,而numpy由于有prod函數,極大的提升了連乘的計算速度.
總結
本文從實際運算的角度比較了python內置的list與numpy的array的計算速度,發現在計算加和是numpy并不占優勢,而且類型轉換上會多消耗時間,而在計算連乘時numpy速度提升非常大,因此在計算連乘時numpy下頻率高. 總的來說,list應用范圍廣,求和速度快.而在科學運算,機器學習等領域則使用numpy.因numpy的array在計算連乘等方面速度極快,并且由于pandas的dataframe,series等廣泛應用在科學計算上占據絕對優勢,也使得其依賴numpy在科學運算中占據絕對優勢.
免責聲明:一、71愛課網旨在免費為用戶傳遞信息,不代表本站的觀點和立場;
二、71愛課網僅提供信息發布平臺,對于本文版權歸屬問題本站無法判斷和調查;
三、本文整理于會員新聞,如果侵犯您的版權,請聯系管理員刪除或增加版權信息(QQ:981561103)。