2012-03-11 3 views
0

내가 NumPy와에 문제가 블록 나를 새로 온 사람에 새 값을 할당 .. --- 나는 ndarray의 값을 변경하려면 : 여기NumPy와는 기존의 ndarray

디버그 정보가입니다.

(Pdb) Nodes[0,0]['f'] = np.array([i/9.0 for i in range(9)]) 
(Pdb) print Nodes[0,0]['f'] 
[ 0.00000000e+00 0.00000000e+00 5.67382835e+10 4.58280650e-41 
    1.00030523e-36 0.00000000e+00 1.00030523e-36 0.00000000e+00 
    2.28153811e-40] 
(Pdb) 

Node[0,0]['f']의 값이 변경되지 않는 이유는 무엇입니까? 대신 Nodes['f'][0,0] = numpy.array([i/9.0 for i in range(9)])를 사용

+5

추가 정보 필요 : 게시 한 내용은 노드 [0,0] [ 'f']의 값이 변경되지 않는다는 것을 보여주지 않으며 원하는대로 변경되지 않았 음을 나타냅니다. 노드 [0,0]과 노드 [0,0] [ 'f']의 값과 유형은 무엇입니까? 우리가 잘라 붙여 넣을 수있는 문제를 보여주는 [짧은 예제] (http://sscce.org)를 만들 수 있습니까? – DSM

답변

1

시도 :

import numpy 
Nodes = numpy.ndarray(shape=(1,1), dtype=[('f', (float, 9))]) 
print Nodes[0,0]['f'] 
# [ 0.00000000e+000 2.10042365e-316 2.44222340e-316 6.90749588e-310 
# 2.10041417e-316 4.22653002e-317 2.76341350e-316 6.90749588e-310 
# 3.95252517e-322] 
Nodes[0,0]['f'] = numpy.array([i/9.0 for i in range(9)]) 
print Nodes[0,0]['f'] 
# [ 0.00000000e+000 2.10042365e-316 2.44222340e-316 6.90749588e-310 
# 2.10041417e-316 4.22653002e-317 2.76341350e-316 6.90749588e-310 
# 3.95252517e-322] 
Nodes['f'][0,0] = numpy.array([i/9.0 for i in range(9)]) 
print Nodes[0,0]['f'] 
# [ 0.   0.11111111 0.22222222 0.33333333 0.44444444 0.55555556 
# 0.66666667 0.77777778 0.88888889] 

나는 차이가 왜 모르겠지만, 아마 this question 관련이있다.