【问题标题】:How to remove rows that contain 0 in data array of a scipy.sparse.csr_matrix如何删除 scipy.sparse.csr_matrix 的数据数组中包含 0 的行
【发布时间】:2014-11-19 11:43:10
【问题描述】:

我目前正在研究一个 scipy 稀疏 csr 矩阵。我想删除矩阵的数据数组中包含 0 的矩阵中的所有行(数据数组是您可以在下面的示例中看到的 1 和 2)。到目前为止,我有以下内容

indexRowsToBeDeleted = []
for rowIndex, dataValue in enumerate(someSparseCsrMatrix.data):
    if dataValue == 0:
        indexRowsToBeDeleted.append(rowIndex) 

这是矩阵的样子(它基本上是使用 sklearn 的 CountVectorizer 创建的):

(0, 1735)   1
(0, 2988)   1
(0, 3366)   2
(0, 3850)   2
(0, 5424)   1
(0, 6537)   1
(0, 7653)   1
:   :
(6383, 15600)   1
(6383, 18689)   1
(6383, 19008)   1
(6383, 19012)   1
(6383, 20094)   1
(6383, 20368)   1

知道如何进行吗?

【问题讨论】:

  • 你能举例说明你的矩阵是什么样的吗?
  • 当然。我刚刚添加了一个示例。
  • 只是出于好奇,为什么要从稀疏矩阵的data 字段中删除0
  • 我正在研究情感分类的特征正则化(损坏)。虽然我不确定删除特征向量中频率为 0 的特征是否重要(我根据特征权重将某些特征的频率计数更改为 0,而不是删除特征,因为我不知道如何那时将它们从矩阵中删除...
  • 谢谢。成功了!

标签: python python-2.7 scipy sparse-matrix


【解决方案1】:

使用 CSR 格式,这很简单:只需在矩阵上调用 eliminate_zeros()

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 2020-01-01
    • 2016-05-18
    • 2020-11-27
    • 2013-08-09
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多