我編寫了一個克里格算法,但我覺得它很慢。特別是,你對我怎麼能vectorise的一段代碼在利弊的想法如下功能:Vectorise Python代碼
import time
import numpy as np
B = np.zeros((200, 6))
P = np.zeros((len(B), len(B)))
def cons():
time1=time.time()
for i in range(len(B)):
for j in range(len(B)):
P[i,j] = corr(B[i], B[j])
time2=time.time()
return time2-time1
def corr(x,x_i):
return np.exp(-np.sum(np.abs(np.array(x) - np.array(x_i))))
time_av = 0.
for i in range(30):
time_av+=cons()
print "Average=", time_av/100.
編輯:獎金問題
- 發生了廣播解決方案如果我想要
corr(B[i], C[j])
與C相同的維度比B 如果我的p範數秩是一個數組,它會發生什麼scipy解決方案:
p=np.array([1.,2.,1.,2.,1.,2.]) def corr(x, x_i): return np.exp(-np.sum(np.abs(np.array(x) - np.array(x_i))**p))
對於2.,我試過
P = np.exp(-cdist(B, C,'minkowski', p))
,但scipy期待一個標量。
@TobySpeight而CR * only *接受工作代碼,我不認爲所有的性能改進問題都是在這裏脫離主題。 [這裏也是這樣說](http://meta.codereview.stackexchange.com/a/5778)。 –
請勿添加要求顯着修改發佈的解決方案的詳細信息。相反,發佈一個新的問題與這些新的細節,如果reqd。鏈接到這個問題。 – Divakar