길이가 m 인 편평한 numpy 배열을 추가하려는 scipy.sparse.dok_matrix
(차원 m x n)이 있습니다. 가 아닌 기존의 키 (del self[(i,j)]
)을 삭제하려고 할 때scipy.sparse.dok_matrix에 numpy 배열 추가
for col in xrange(n):
dense_array = ...
dok_matrix[:,col] = dense_array
그러나,이 코드는 dok_matrix.__setitem__
에서 예외를 발생시킵니다.
그래서, 지금은 이것을 unelegant 방법을하고있는 중이 야 위해 :
for col in xrange(n):
dense_array = ...
for row in dense_array.nonzero():
dok_matrix[row, col] = dense_array[row]
이 을하므로 매우 비효율적을 느낀다. 그럼, 가장 효율적인 방법은 무엇입니까?
감사합니다.
에서 수정되었습니다 생각합니다. 감사합니다. – PhilS
Doh, 놓 쳤지만 기꺼이 도와 줄 수있었습니다. –
side-note : 키 (i, j)가 아직 존재하지 않으면 'dok_matrix'에 제로 값이 설정되어 있으므로 위의 dok.py에있는 코드가 버그라고 생각합니다. 티켓 (http://projects.scipy.org/scipy/ticket/1160)을 열었습니다. 또한, "dense_array"가 희박한 경우 "0"이 아닌 값만 검사하고 삽입해야합니다 ('__setitem__' 만 호출해야 함). 그래서 내가 언급 한 사람이 더 아름답더라도 나는 나의 오래된 버전을 고수한다. – PhilS