1. 程式人生 > 程式設計 >關於Python中的向量相加和numpy中的向量相加效率對比

關於Python中的向量相加和numpy中的向量相加效率對比

直接使用Python來實現向量的相加

# -*-coding:utf-8-*-
#向量相加
def pythonsum(n):
 a = range(n)
 b = range(n)
 c = []
 for i in range(len(a)):
  a[i] = i**2
  b[i] = i**3
  c.append(a[i]+b[i])
 return a,b,c

print pythonsum(4),type(pythonsum(4))
for arg in pythonsum(4):
 print arg

從這裡這個輸出結果可以看得出來,return多個值時,是以列表的形式返回的

([0,1,4,9],[0,8,27],2,12,36]) <type 'tuple'>
[0,9]
[0,27]
[0,36]

使用numpy包實現兩個向量的相加

def numpysum(n):
 a = np.arange(n) ** 2
 b = np.arange(n) ** 3
 c = a + b
 return a,c
(array([0,9]),array([ 0,27]),36])) <type 'function'>
[0 1 4 9]
[ 0 1 8 27]
[ 0 2 12 36]

比較用Python實現兩個向量相加和用numpy實現兩個向量相加的情況

size = 1000
start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
# print 'The last 2 elements of the sum',c[-2:]
print 'pythonSum elapsed time in microseconds',delta.microseconds

size = 1000
start1 = datetime.now()
c1 = numpysum(size)
delta1 = datetime.now() - start1
# print 'The last 2 elements of the sum',c1[-2:]
print 'numpySum elapsed time in microseconds',delta1.microseconds

從下面程式執行結果我們可以看到在處理向量是numpy要比Python計算高出不知道多少倍

pythonSum elapsed time in microseconds 1000
numpySum elapsed time in microseconds 0

以上這篇關於Python中的向量相加和numpy中的向量相加效率對比就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。