gpt4 book ai didi

python - 使用 scipy 在稀疏矩阵上分组

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:07 25 4
gpt4 key购买 nike

我用 sklearn.preprocessing.OneHotEncoder() 构建了一个 scipy 稀疏矩阵 S。矩阵 S 有 10^6 行,500 列。

我还有一个 numpy 数组 A,其中包含 10^6 个值,如下所示:

A = [1,1,2,2,2,3,4,5,6,6,7,8,8,8,...]

我想在数组 A 中写入的组之后对稀疏矩阵 S 进行分组,并使用 numpy.sum() 作为聚合函数。

我该怎么办?当然,我所有的东西都需要放在内存中,所以我不得不为 S 使用稀疏矩阵。

最佳答案

如果索引在增加(从你的例子看来),你可以使用 itertools.groupbyenumerate 上的名单。对于每个组,使用 numpy's indexing .

循环看起来像这样:

import itertools
import operator

for g, inds in itertools.groupby(enumerate(A), key=operator.itemgetter(1)):
...

... 应该替换为可以用 S 执行任何操作的代码。要了解原因,请注意以下示例:

for g, inds in itertools.groupby(enumerate(A), key=operator.itemgetter(1)):
print g, list([i[0] for i in inds])

产生

1 [0, 1]
2 [2, 3, 4]
3 [5]
4 [6]
5 [7]
6 [8, 9]
7 [10]
8 [11, 12, 13]

您可以看出第一项是组,第二项是索引列表。 Numpy 具有广泛的实用程序,可以在给定此类列表的情况下进行切片和索引。

关于python - 使用 scipy 在稀疏矩阵上分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com