首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地对scipy稀疏矩阵进行混洗,不管它是什么格式?

如何有效地对scipy稀疏矩阵进行混洗,不管它是什么格式?
EN

Stack Overflow用户
提问于 2020-12-02 01:38:18
回答 1查看 117关注 0票数 0

如何对scipy稀疏矩阵的行进行混洗?

有一个scikitlearn.utils.shuffle,但它返回一个新的矩阵,因此对于非常大的稀疏矩阵,混洗不是就地完成的,而是复制矩阵。

numpy.random.Generator.shuffle,但它似乎是work only for CSR matrices

如何有效地打乱scipy稀疏矩阵的行数,不管它是以什么格式存储在内存中的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-02 03:35:45

我正在将我的评论合并到一个答案中。这不是一种解决方案,但编辑起来更容易。

如果您希望找到一种有效的行随机排列,而不考虑稀疏格式,那么您还没有充分研究稀疏矩阵文档。只有csrlil以面向行的方式存储数据。

我可以想象使用lil格式就地进行行混洗的情形。虽然csr以面向行的方式存储数据,但行洗牌将更加复杂,并且难以就地执行。

通过scikit混洗,我看到它只是归结到matrix[index,:] (其中index是一个没有替换的采样)。这与CSR链接中的相同。无论如何,CSR索引实际上使用了矩阵乘法,使用了一个特殊构造的‘提取器’矩阵。

混洗列表是相对有效的,不管是不是就地,因为它只需要创建一个指向行列表的指针/引用的新列表。密集numpy数组的行洗牌需要复制所有数据。它可以在编译后的代码中完成,但它仍然需要足够的缓冲区空间来进行整个复制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65095593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档