나는 csr_matrix이,이 전이라고 가정 해 봅시다 : csr_matrix에 요소를 추가하는 올바른 방법은 무엇입니까?
import scipy.sparse as ss
mat = ss.csr.csr_matrix((50, 100))
이 지금은이 행렬의 값의 일부를 수정할. 나는 전화 :
mat[0,1]+=1
내가 얻을 :
SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
난 그냥 행렬의 작성 후 (마지막에서 매트릭스의 규모에서) 몇 가지 값을 설정하기 만하면됩니다. 나중에 열을 읽거나 전체 행렬 (예 : .log1p()
)에 대한 요소 별 작업을 수행합니다.
올바른 방법은 무엇입니까? 현재 경고를 무시할 수 있지만 더 좋은 방법이있을 수 있습니다. 경고를 내지 않습니다.
CSR 및 CSC는 빠른 선형 대수 계산에 선호되는 형식입니다. 일반적으로 행렬을 COO, LIL 또는 DOK로 구성하고 CSC 또는 CSR로 변환 한 다음 비싼 수학을 수행합니다. 유스 케이스를 더 잘 이해하는 데 도움이 될 것입니다. 매트릭스로 무엇을하고 싶습니까? 비싼 작업 사이에 새 데이터를 추가해야합니까, 아니면 처음에 추가 작업을 수행 할 수 있습니까? – Jaime
수정되었습니다. 더 명확히되기를 바랍니다. –
[COO 매트릭스] (http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.coo_matrix.html)를 만들고 값을 추가 한 다음 CSC 또는 CSR 매트릭스를 사용하면 작업 속도가 향상됩니다. 이후에 모두 elementwise 연산을 사용하면 COO가 정상적으로 작동합니다. 열을 추출하려면 CSR을 선택하고 CSC를 선택하십시오. – Jaime