scipy.sparse.hstack [ValueError:块必须为二维]

时间:2019-04-19 03:39:14

标签: python numpy scipy sparse-matrix

ab是第二个numpy数组,我想垂直堆叠并压缩为稀疏数组。

我只是使用:

c = sp.hstack([a, b])

但是它抛出错误:

~/anaconda3/lib/python3.6/site-packages/scipy/sparse/construct.py in hstack(blocks, format, dtype)
    462 
    463     """
--> 464     return bmat([blocks], format=format, dtype=dtype)
    465 
    466 

~/anaconda3/lib/python3.6/site-packages/scipy/sparse/construct.py in bmat(blocks, format, dtype)
    545 
    546     if blocks.ndim != 2:
--> 547         raise ValueError('blocks must be 2-D')
    548 
    549     M,N = blocks.shape

ValueError: blocks must be 2-D

但是我记得这段代码可以在我之前的代码中使用。

1 个答案:

答案 0 :(得分:1)

问题在于堆栈列表中至少包含一个稀疏数组。

换句话说,代码

c = sp.hstack([a, b, c, d, ...])
[a, b, c, d, ...]中的

必须至少包含一个稀疏数组。

如果列表不包含稀疏数组,则可以尝试:

c = sp.hstack([sp.csr_matrix(a), b, c, d, ...])

它有效!