如何在SciPy中创建(0,N)形压缩稀疏矩阵?

时间:2018-03-12 05:26:45

标签: python-2.7 scipy sparse-matrix

我依赖于一个开源库,Detectron,它在SciPy中初始化压缩的稀疏行(CSR)矩阵,形状为(0,N),like so(链接到GitHu repo中的相关行): / p>

 entry['gt_overlaps'] = scipy.sparse.csr_matrix(
               np.empty((0, self.num_classes), 
               dtype=np.float32))

然而,我可用的SciPy版本(0.12.1)不支持此(0,N)形状,并给出ValueError:

  

文件   “/mnt/nfs/work1/elm/arunirc/Tools/detectron/lib/datasets/json_dataset.py”   第150行,在_prep_roidb_entry中       np.empty((0,self.num_classes),dtype = np.float32)文件“/usr/lib64/python2.7/site-packages/scipy/sparse/compressed.py”,行   66,在 init 中       self._set_self(self。 class (coo_matrix(arg1,dtype = dtype)))文件“/usr/lib64/python2.7/site-packages/scipy/sparse/coo.py”,行   184,在 init 中       self.shape = M.shape文件“/usr/lib64/python2.7/site-packages/scipy/sparse/base.py”,第74行,in   set_shape       提高ValueError('无效形状')ValueError:无效形状

是否有任何版本的SciPy确实支持创建此类CSR阵列?谢谢!

1 个答案:

答案 0 :(得分:0)

最新情况还可以:

In [286]: scipy.sparse.csr_matrix(
     ...:                np.empty((0, 3), 
     ...:                dtype=np.float32))
     ...:                
Out[286]: 
<0x3 sparse matrix of type '<class 'numpy.float32'>'
    with 0 stored elements in Compressed Sparse Row format>
In [287]: scipy.__version__
Out[287]: '1.0.0'

它不是一个非常有用的形状,但我无法想到它为什么会无效的概念性原因。