Newer scipy
버전은 scipy.sparse.save_npz
기능 (및 해당로드)이 있습니다. 스파 스 매트릭스의 속성을 numpy
savez
zip 아카이브에 저장합니다. csr
의 경우에는 data
, indices
및 indptr
개의 배열과 모양을 저장합니다.
scipy.io.savemat
은 MATLAB 호환 형식 (csc)으로 스파 스 매트릭스를 저장할 수 있습니다. 스파 스 매트릭스를 처리 할 수있는 하나 또는 두 개의 다른 scipy.io
형식이 있지만 이들과 함께 작업하지는 못했습니다.
스파 스 매트릭스에는 배열 수가 적은 배열이 포함되어 있지만 배열 하위 클래스가 아니기 때문에 numpy
함수는 직접 사용할 수 없습니다.
numpy 배열에 대한 pickle
방법은 np.save
입니다. 그리고 객체를 포함하는 배열은 pickle
을 사용합니다 (가능한 경우). 따라서 배열 사전의 피클이 작동해야합니다.
희박한 dok
형식은 dict
의 하위 클래스이므로 피클 할 수 있습니다. json
과 함께 작동 할 수도 있습니다. 그러나 나는 그것을 시도하지 않았다.
In [427]: json.dumps(np.arange(5))
TypeError: array([0, 1, 2, 3, 4]) is not JSON serializable
In [428]: json.dumps(np.arange(5).tolist())
Out[428]: '[0, 1, 2, 3, 4]'
dok
중 하나가 작동하지 않습니다 그런데
, 일반 NumPy와 배열은 하나 jsoned
수 없습니다. 키는
In [433]: json.dumps(M.todok())
TypeError: keys must be a string
MatrixMarket
스파 스 처리하는 텍스트 형식, 인덱스의 튜플 있습니다
In [444]: io.mmwrite('test.mm', M)
In [446]: cat test.mm.mtx
%%MatrixMarket matrix coordinate integer general
%
1 5 4
1 2 1
1 3 2
1 4 3
1 5 4
덕분에 @hpaulj,하지만 난'json' 직렬화 객체, 내가 언급 한 언급 할 때 'dict'은 직렬화 가능합니다. numpy 배열의'dict'은 직렬화 될 수 있습니다. scipy sparse csr 행렬의'dict'은 할 수 없습니다. 나는 열쇠가 정수이고 값이 scipy 스파 스 csr 행렬 인'dict'을 저장하는 방법을 찾고있다. – StatsSorceress
사전을 직렬화하려면 모든 값을 직렬화 할 수 있어야한다. 각 구성 요소 오브젝트에 대해 정의됩니다. – hpaulj
그래, 희박한 행렬이 직렬화되지 않기 때문에 직렬화를 혼자 남겨 두자. 값이 직렬화되지 않는 dict을 어떻게 저장할 수 있습니까? – StatsSorceress