2015-02-02 2 views
-1

존재와의 내가 같은 클래스를 초기화하기 위해 노력하고있어 말을하지 않는 값 0을 반환 :내가 스파 스 매트릭스를 구축하기 위해 노력하고있어

m = Sparse_Matrix(3,3, (0,0,0),(0,1,10),(0,2,11),(1,0,9),(1,2,8),(2,0,7),(2,1,8)) 

을 내가 m 호출하는 경우. 스파 스 매트릭스에 대한 값 (1,1)이없는 주어진, 그러나

m.row(0) -> (0,10,11) 

, 나는하기로 해요 : 행 (0), 그 때문에, 그 행의 모든 ​​값을 반환 해당 인덱스에 대해 0을 반환하면 어떻게됩니까? 그래서 예를 들어, 내가 호출하는 경우 : 여기

m.row(1) -> (9,0,8) 

내 코드 내 코드에서

def row(self, value:int): 
    row_list = [] 
    for key in self.list_of_tuples: 
     print(key) 
     if value == key[0]: 
      row_list.append(self.matrix.get((key[0], key[1]),0)) 
      print(row_list) 
    return tuple(row_list) 

입니다 self.matrix 누구의 키 인덱스의 튜플, 그리고 값을 가진있는 사전이다 해당 키에 해당하는 값입니다. 예를 들어, 내가 가지고있을

{(0,1):10, (0,2):11, (1,0):9, (1,2):8, (2,0):7, (2,1):8} 

값이 0이면 그 값을 사전에 추가하지 않습니다.

편집 : 나는 이것을 위해 scipy.sparse를 사용할 수 없습니다.

+0

하지 않음 귀하의 질문에 대한 답변이지만 ['scipy.sparse'] (http://docs.scipy.org/doc/scipy/reference/sparse.html)를 모르는 경우에는 그걸로. – senshin

+0

@senshin 오 이런 문제에 scipy.sparse를 사용할 수 없다는 것을 언급해야합니다. 나를 상기시켜 줘서 고마워. 나는 그것을 문제로 편집해야한다. – Tyler

답변

1

당신이 클래스의 나머지 부분을 게시하지 않았기 때문에, 나는 내부 구현 세부 사항이 생겼는지 모르겠지만, 이건 어때요 :

class SparseMatrix: 
    def __init__(self, rows: int, cols: int, *entries): 
     self.rows = rows 
     self.cols = cols 
     self.matrix = dict() 
     for entry in entries: 
      self.matrix[(entry[0], entry[1])] = entry[2] 

    def row(self, row_num: int): 
     return [self.matrix.get((row_num, i), 0) for i in range(self.cols)] 

다음 :

>>> m = SparseMatrix(3, 3, (0,0,0), (0,1,10), (0,2,11), (1,0,9), (1,2,8), (2,0,7), (2,1,8)) 
>>> m.row(0) 
[0, 10, 11] 
>>> m.row(1) 
[9, 0, 8] 
+0

대단히 감사합니다! 10/10 답변. – Tyler