2014-12-05 2 views
0

numpy 매트릭스 안에 튜플을 저장하고 싶지만 오류가 반환되는 것처럼 보입니다. 그것에 대해 갈 길이 있습니까?numpy 행렬에 객체를 저장하는 방법이 있습니까?

>>> import numpy 
>>> y = numpy.zeros((4,4)) 
>>> y[1][1] = (1,1) 

ValueError: setting an array element with a sequence. 

감사

+0

저장하려는 모든 튜플이 숫자로 된 n 개의 튜플 인 경우에는 (n + 1) -d ndarray 만 사용하십시오. 이것은 더 빠르고 효율적이며 작업하기 쉽습니다. – jme

답변

1

사용 dtype=object 당신은 당신이 원하는 당신의 배열에 아무것도 넣을 수 있습니다 :

>>> arr = np.zeros((4, 4), dtype=object) 
>>> arr[1, 1] = (1, 1) 
>>> arr 
array([[0, 0, 0, 0], 
     [0, (1, 1), 0, 0], 
     [0, 0, 0, 0], 
     [0, 0, 0, 0]], dtype=object) 
1

당신은 numpy's structured arrays를 사용하여이 작업을 수행 할 수 있습니다. 예 :

>>> import numpy as np 
>>> y = np.zeros((4, 4), dtype=("i8, i8")) 
array([[(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)]], 
     dtype=[('f0', '<i8'), ('f1', '<i8')]) 

>>> y[1,1] = (1,1) 
>>> y 
array([[(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (1L, 1L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)], 
     [(0L, 0L), (0L, 0L), (0L, 0L), (0L, 0L)]], 
     dtype=[('f0', '<i8'), ('f1', '<i8')]) 
관련 문제