2017-03-10 2 views
0

목록 (아래 코드에서 nmax)에서 배열 배열을 만들고 싶습니다. 목록 이해력을 사용하려고하지만 예상 한 결과를 얻지 못하고 있습니다. 내가 수동으로 행을 지정하면 , 그것은 예상대로 작동합니다 목록에서 numpy 배열 배열 만들기

dummy[0] = np.linspace(1, nmax[0], len(nmax)) 
dummy[0] 
array([ 1.  , 1.00166722, 1.00333444, ..., 5.99666556, 
    5.99833278, 6.  ]) 

dummy[2999] = np.linspace(1, nmax[2999], len(nmax)) 
dummy[2999] 
array([ 1.  , 1.01433811, 1.02867623, ..., 43.97132377, 
    43.98566189, 44.  ]) 

그러나 지능형리스트와

, 그것은 나에게 다른 결과를 제공합니다

dummy = [(np.linspace(1, nmax[i], len(nmax))) for i in nmax] 
dummy[0] 
array([ 1.  , 1.00166722, 1.00333444, ..., 5.99666556, 
    5.99833278, 6.  ]) 
dummy[2999] 
array([ 1.  , 1.00200067, 1.00400133, ..., 6.99599867, 
    6.99799933, 7.  ]) 
다른 하나 개의 값에서의 변화는 지수 2585에 있습니다

왜 그런지 모르겠습니다.

이 전체 코드입니다 :

rho=7800 
lamb = 500 * 10 **(-9) 

#parameters 
a = np.linspace(1e-9, 3000e-9, 3000) 
x = a * 2*np.pi/lamb 

nmax = [int(round(2+i+4*i**(1/3))) for i in x] # list 

n = np.zeros((len(nmax), len(nmax))) 

#dummy = [(np.linspace(1, nmax[i], len(nmax))) for i in nmax] 

답변

2

dummy = [(np.linspace(1, i, len(nmax))) for i in nmax] 시도는, 당신이 실제로하고있는 것은 dummy[2999] = np.linspace(1, nmax[nmax[2999]], len(nmax)) 대신 dummy[2999] = np.linspace(1, nmax[2999], len(nmax))입니다.