def saveSparseHDF5(matrix, prefix, fname):
""" matrix: sparse matrix
prefix: prefix of dataset
fname : name of h5py file where matrix will be saved
"""
assert matrix.__class__==csr_matrix or matrix.__class__==csc_matrix,'Expecting csc/csr'
with h5py.File(fname,mode='a') as f:
for info in ['data','indices','indptr','shape']:
key = '%s_%s'%(prefix,info)
try:
data = getattr(matrix, info)
except:
assert False,'Expecting attribute '+info+' in matrix'
"""
For empty arrays, data, indicies and indptr will be []
To deal w/ this use np.nan in its place
"""
if len(data)==0:
f.create_dataset(key,data=np.array([np.nan]))
else:
f.create_dataset(key,data= data)
key = prefix+'_type'
val = matrix.__class__.__name__
f.attrs[key] = np.string_(val)
评论列表
文章目录