lil_matrix
의 속성을 직접 설정하려고하면 예상치 못한 동작이 발생합니다. 다음의 간단한 예에서 어떤 일이 일어나고 있는지 설명 할 수 있습니까?스파 스 lil_matrix는 데이터를 할당 할 수 없습니다
내 특별한 사용 사례는 2를 모듈러로 설정하려고합니다. ie dense-matrix-speak에서 나는 단지 matrix[0] %= 2
을하고 싶다.
from scipy import sparse
import numpy as np
np.random.seed(0)
matrix = sparse.rand(10**3,10**3).tolil()
num_entries = len(matrix[0].data[0])
print num_entries
# 9
# this throws no errors...
matrix[0].data[0] = [2]*num_entries
# but does nothing!
assert (np.array(matrix[0].data) == 2).all() # FAILS
# in fact nothing can be done to alter .data directly...
matrix[0].data[0].pop() # returns the last float from the row
# but does not actually pop it from the row!
assert (len(matrix[0].data[0]) == num_entries-1) # FAILS
'num_entries'의 값은 무엇입니까? 나는'0'을 추측하고있다. 'matrix.data'는리스트의리스트이고,'matrix.data [0]'는 그것들 중 첫 번째 것입니다. 그것은 비어있을 수 있습니다. – hpaulj
위의 코드에서 추가했지만 num_entries는 9입니다. matrix.data는 실제로 목록 인 파이썬 개체의 numpy.array입니다. – gabe
그래서'matrix [i] .data [0] == matrix.data [i]'는 모든'i'에 대해 true이지만,'is' 연산자와 비교할 때 같지 않습니다. – hpaulj