2013-03-11 2 views
1

어딘가에 뭔가 놓친 것 같습니다. 나는 2 개의 for 루프 (x와 y)와 x, y 위치를 기반으로 한 함수를 사용하여 배열을 채웠다. 유일한 문제는 배열의 크기에 관계없이 배열의 값이 항상 0으로 끝나는 것입니다.숫자가 작은 배열은 항상 0으로 끝나나요?

thetamap = numpy.zeros(36, dtype=float) 
thetamap.shape = (6, 6) 
for y in range(0,5): 
    for x in range(0,5): 
     thetamap[x][y] = x+y 
print thetamap 

답변

8

range(0, 5)0, 1, 2, 3, 4을 생산하고 있습니다. 끝점은 항상 생략됩니다. 너는 간단하게 range(6)을 원한다. 다음 함께 수 있도록 NumPy와 방송을 사용하여 추가,이 행 벡터 및 열 벡터를 만드는

thetamap = np.arange(6) + np.arange(6)[:,None] 

: 더 나은 아직

는 한 줄에 배열을 만들기 위해 NumPy와의 멋진 전원을 사용 매트릭스.

+4

numpy 메소드로 정말 미치고 싶다면'np.add.outer (range (6), range (6)) '와 동일합니다. 방송은 훨씬 더 일반적으로 적용 가능합니다. –

+3

'sum (np.mgrid [: 6, : 6])'? – DSM

+0

쿨, 고마워요! – user1949752

관련 문제