2012-06-23 18 views
16

Bir scipy.sparse matrisinin bayt boyutunu belirlemek mümkün mü? Numpy size yaparak bir dizinin boyutunu belirlemek aşağıdaki: Sadece düzenli dizisi olduğu gibi bunlardan herhangi biri için bayt sayısını alabilirsinizBir scipy.sparse matrisinin bayt boyutunu belirleme?

import numpy as np 

print(np.zeros((100, 100, 100).nbytes) 
8000000 

cevap

26

bir seyrek matris, düzenli numpy dizilerden inşa edilmiştir . Sadece dizi öğelerinin bayt sayısını istiyorsanız

: Eğer seyrek matris oluşturmak için gerekli tüm Dizilerin bir bayt sayısı istiyorsanız

>>> from scipy.sparse import csr_matrix 
>>> a = csr_matrix(np.arange(12).reshape((4,3))) 
>>> a.data.nbytes 
88 

, o zaman istediğiniz düşünüyorum:

>>> print a.data.nbytes + a.indptr.nbytes + a.indices.nbytes 
152 
+0

Güzel, bu çok iyi çalıştı. İlk davayla daha çok ilgileniyorum ama ikinci durum ilginç. Bu bellek boyutu tüm nesneyi temsil ediyor mu? – ebressert

+0

Hayır, sadece diziler. Http://stackoverflow.com/questions/33978/find-out-how-much-memory-is-being-used-by-an-object-in-python sayfasına bakın. – user545424

+2

coo_matrix için a.col.nbytes + a.row.nbytes + a.data.nbytes olmalıdır. – czxttkl

İlgili konular