【发布时间】:2014-07-25 09:44:54
【问题描述】:
Scipy 有不同类型的矩阵。其中两个是列稀疏矩阵和行稀疏矩阵。列稀疏矩阵支持快速列切片操作,行稀疏矩阵支持快速行切片操作。
但如果操作 a[i,:] 是列或行切片操作,我不是。有什么帮助吗?
【问题讨论】:
Scipy 有不同类型的矩阵。其中两个是列稀疏矩阵和行稀疏矩阵。列稀疏矩阵支持快速列切片操作,行稀疏矩阵支持快速行切片操作。
但如果操作 a[i,:] 是列或行切片操作,我不是。有什么帮助吗?
【问题讨论】:
没有什么比自己尝试更好的了:
In [1]: import numpy as np
In [2]: np.arange(9).reshape(3,3)
Out[2]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [3]: a = np.arange(9).reshape(3,3)
In [4]: a[0, :]
Out[4]: array([0, 1, 2])
In [5]: a[:, 0]
Out[5]: array([0, 3, 6])
因此,第一个索引对应于行,第二个索引对应于列。 a[i, :]是选中行i,所以是行切片操作。
【讨论】:
numpy 数组,OP 询问scipy.sparse 矩阵。不过,自己尝试的建议是有效的。 csr_matrix 在索引行时更快,csc_matric 在索引列时更快。但无论哪种方式都可以成为索引(至少在足够新的版本中)。