【问题标题】:Which one is which between column slicing and row slicing?列切片和行切片之间是哪一个?
【发布时间】:2014-07-25 09:44:54
【问题描述】:

Scipy 有不同类型的矩阵。其中两个是列稀疏矩阵和行稀疏矩阵。列稀疏矩阵支持快速列切片操作,行稀疏矩阵支持快速行切片操作。

但如果操作 a[i,:] 是列或行切片操作,我不是。有什么帮助吗?

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    没有什么比自己尝试更好的了:

    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 在索引列时更快。但无论哪种方式都可以成为索引(至少在足够新的版本中)。
    • @hpaulj 它们是具有相同基本语义的不同对象。问题是哪个是哪个(我每次都必须检查)。
    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    相关资源
    最近更新 更多