2015-01-01 6 views
-1

다른 온도에서 진동 파티션 기능을 얻기 위해 파이썬을 사용하고 싶습니다. freq = [100,150,200] (실제로는 .dat 파일 형태로 읽음)과 Temp = np.arange (273., 973., 25)와 같은 두 개의 1D 배열이 있습니다. 이제 qvib = 특정 온도 (1/1-exp (-h * nu/kb/T))에 대한 freq 이상의 제품입니다. 내 루프에 대한 :2 차원 배열을 만들기위한 파이썬 for 루프 2 1D 배열

for i in range(len(T)): 
for j in range(len(freq)): 
    q[i][j]=1/(1-np.exp(-h*freq[j]/kb/T[i])) 
    Q[i]=np.prod(q[i][:]) 

나는 2 ~ 3 일 동안 python을 사용하고 있습니다. 나는 심지어 파이썬의 모든 인라인 작업을 모른다. 두 가지 질문이 있습니다 : 1) for 루프를 사용하지 않고도 할 수 있습니까? (sum 또는 no.prod 만 사용하는 것과 같습니다) 2) My for 루프가 작동하지 않습니다. 나는 인터넷에서 검색했지만 수학 연산 의이 유형에 대한 루프 참조에 대한 좋은 발견하지 못했습니다. 친절한 도움을 미리 보내 주셔서 감사합니다.

for i in range(len(T)): 
    q = 1/(1-np.exp(-h*freq/kb/T[i]))  
Q = np.prod(q) 

하지만 정말 : 당신이 그것에 할당 할 수 있습니다 전에 :

Q = np.empty(len(T)) 

더 나은이

+0

어떻게 작동하지 않는가요? ? –

+0

역 추적 (가장 최근 통화 최종) : 파일 "", 3 호선, 나가서 설명하자면 NameError에 : 이름을 'Q'는 나는 내가 Q 및 Q를 선언 할 필요가 있다고 생각 정의되어 있지 않습니다하지만 난 방법을 모르는 그들을 선언하십시오. – mamun

+0

Q와 Q는 무엇입니까? –

답변

3

당신은 적어도 당신의 온도 배열로 하늘의 배열과 같은 길이를 Q를 정의 할 필요가 NumPy에 대한 좋은 점은 모두 파이썬 루프를 없애는 능력입니다.

Q = np.prod(1/(1-np.exp(-h*freq[:, None]/kb/T)), axis=0) 
+0

이제 제대로 작동합니다. 변수 만 선언하는 것이 문제였습니다. 감사합니다. – mamun