scipy.sparse
来进行操作的情况下添加或删除行或列。如果您想要删除列(进行列切片),则应该选择 csc_matrix
,而对于有效的行切片,则应该使用 csr_matrix
。通常,使用 coo_matrix
类型创建稀疏矩阵是方便的,您可以为每个非零条目指定 row
、col
和 data
。m = coo_matrix((data, (row, col)), shape=(nrow, ncol))
m = m.to_csr()[rows_to_keep, :]
m = m.to_csc()[:, cols_to_keep]
其中rows_to_keep
可以是一个列表或一个一维数组,包含要保留的索引。
如果需要一个密集矩阵,可以使用numpy.memmap()
数组。创建一个可以使用以下方法:
a = np.memmap('test.memmap', dtype='float64', mode='w+', shape=(1000, 1000))
a.fill(100.)
要阅读一个文件,可以执行以下操作:
a = np.memmap('a.memmap', dtype='float64', mode='r+', shape=(1000, 1000))
如果您想删除或添加行和列,您需要创建第二个memmap数组,然后从原始数组中分配所需的列:
b = np.memmap('b.memmap', dtype='float64', mode='w+', shape=(3, 1000))
b = a[[0, 99, 199], :]
这将使用所有列,在a
中保存第1、100和200行到b
中。
to_csr()
或to_csc()
之前,您必须进行转换,然后索引应该可以正常工作... - Saullo G. P. Castrocoo_matrix
的目的是提供一种稀疏矩阵类型,它易于填充并且可以快速转换为其他类型(例如csr_matrix
或csc_matrix
)。 - Saullo G. P. Castro