나는 크 리그 팅 알고리즘을 코딩했는데 아주 느리다. 특히, 당신이 나는 단점의 코드 조각을 벡터화 수있는 방법에 대한 아이디어가하는 일은 아래 기능 :Vectorise 파이썬 코드
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). –
게시 된 솔루션을 크게 수정해야하는 세부 정보를 추가하지 마십시오. 대신, 새로운 세부 사항이 포함 된 새로운 질문을 게시하고 필요할 경우 게시하십시오. 이 질문에 연결. – Divakar