首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSTACK scipy.sparse.csr.csr_matrix到单个csr矩阵

VSTACK scipy.sparse.csr.csr_matrix到单个csr矩阵
EN

Stack Overflow用户
提问于 2020-05-08 07:39:46
回答 2查看 961关注 0票数 1

最近,我很难处理稀疏矩阵,并将它们叠加到一个矩阵中。我过去常常创建多个csr_matrix对象

代码语言:javascript
复制
vec_list = sp.sparse.csr_matrix(my_vec_i) # every vector of shape (1,200)

vec_list由大约100个稀疏矩阵组成之后,我使用了sp.vstack函数(而不是numpy)将所有100个条目合并到一个形状的csr矩阵( 100,200)中。

现在,在我的当前设置(python3.8)中,我看到了一个警告,即sp.vstack将被废弃,但无论如何,不管我是否使用了numpy的或and的vstack功能,我最终得到了一个形状(100,1)的数组,其中我的200列被视为第一列和唯一一列中的1 csr_matrix条目。

在我看到的旧代码片段中,sp.vstack(vec_list)创建了一个形状为的稀疏crs矩阵(100,200)。我错过了什么吗,有人对此有想法吗?我有点绝望地想要建立我的堆积的稀疏矩阵。感谢所有人

编辑:正如你在下面的评论中所看到的,np.vstack和sp.vstack不一定要做同样的事情(在我的回答中,我难过np.vstack两次,但我指的是sp.vstack一次)。我使用的是精确的解决方案(复制),它在某个时候返回了一个错误,因为没有发生堆叠。为了使用sp.stacking,我对非csr_矩阵数组进行了叠加,然后将其转换为csr_matrix。当使用庞大的数组集时,这是不可行的,但至少我可以在没有问题的情况下运行文件。为了解决以下来自Tinu的问题,我无法这样解决,结果如下所示--在执行示例代码时:

代码语言:javascript
复制
>>> np.vstack(vec_list).shape
(100, 1)
>>> sp.vstack(vec_list).shape
(100, 200)

Python 3.8.2,Scipy 1.4.1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-12 14:11:11

不幸的是,我无法看到与上述相同的结果--使用我的Python3.8.3rc1。复制代码和堆叠会导致以下情况:

代码语言:javascript
复制
>>> np.vstack(vec_list).shape # (100, 1)
>>> sp.vstack(vec_list).shape # (100, 1)

我要做些什么来解决我的问题:我将堆叠非csr_矩阵数组,然后将其转换为csr_matrix。不管怎样,谢谢你!

票数 0
EN

Stack Overflow用户

发布于 2020-05-08 08:32:59

不幸的是,我不能重复你的错误。这是我的代码:

代码语言:javascript
复制
from scipy.sparse import csr_matrix, vstack
import numpy as np

vec_list = []
for i in range(100):
    vec_list.append(csr_matrix(np.random.randint(2,size=(1,200))))
vec_mat = vstack(vec_list)
vec_mat.shape

输出:

代码语言:javascript
复制
(100, 200)

我使用python 3.8.2和and 1.4.1

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

https://stackoverflow.com/questions/61674309

复制
相关文章

相似问题

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