scipy 将一个稀疏矩阵的所有行附加到另一个

d.a*_*d.a 5 python matrix scipy sparse-matrix

我有一个 numpy 矩阵,想在其上附加另一个矩阵。

这两个矩阵具有以下形状:

m1.shape = (2777, 5902)  m2.shape = (695, 5902)
Run Code Online (Sandbox Code Playgroud)

我想将 m2 附加到 m1 以便新矩阵具有以下形状:

m_new.shape = (3472, 5902)
Run Code Online (Sandbox Code Playgroud)

当我使用 numpy.append 或 numpy.concatenate 时,我只会得到一个新数组,其中包含两个矩阵和形状 (2,1)。

你们中的任何一个人都知道如何从两个矩阵中获得一个大矩阵?

附加信息:两者都是稀疏矩阵。

编辑: m1 看起来像

(0, 1660)   0.444122811195
(0, 3562)   0.260868771714
(0, 4743)   0.288149437574
(0, 4985)   0.514889706991
(0, 5215)   0.272163636657
(0, 5721)   0.559006134727
(1, 555)    0.0992498400527
(1, 770)    0.133145289523
(1, 790)    0.0939044698233
(1, 1097)   0.259867567986
(1, 1285)   0.188836288168
(1, 1366)   0.24707459927
(1, 1499)   0.237997843516
(1, 1559)   0.120069347224
(1, 1701)   0.17660176488
(1, 1926)   0.185678520634
(1, 2177)   0.163066377369
(1, 2641)   0.079958199952
(1, 2937)   0.259867567986
(1, 3551)   0.198471489351
(1, 3562)   0.0926197593026
(1, 3593)   0.100537828805
(1, 4122)   0.198471489351
(1, 4538)   0.57162654484
(1, 4827)   0.105808609537
Run Code Online (Sandbox Code Playgroud)

m2 看起来像:

(0, 327)    0.0770581299315
  (0, 966)  0.309858753157
  (0, 1231) 0.286870892505
  (0, 1384) 0.281385698712
  (0, 1817) 0.204495931592
  (0, 2284) 0.182420951496
  (0, 2414) 0.114591086901
  (0, 2490) 0.261442040482
  (0, 3122) 0.321676138471
  (0, 3151) 0.286870892505
  (0, 4031) 0.172251612658
  (0, 5149) 0.25839783806
  (0, 5215) 0.125806303262
  (0, 5225) 0.336280781816
  (0, 5231) 0.135930403721
  (0, 5294) 0.145049459537
  (0, 5794) 0.20145172917
  (0, 5821) 0.224439589822
  (1, 327)  0.191031948626
  (1, 1171) 0.62081265022
Run Code Online (Sandbox Code Playgroud)

矩阵类型为:

<class 'scipy.sparse.csr.csr_matrix'> <class 'scipy.sparse.csr.csr_matrix'>
Run Code Online (Sandbox Code Playgroud)

解决了:

m_new = scipy.sparse.vstack((m1, m2))
Run Code Online (Sandbox Code Playgroud)

成功了

谢谢你的帮助。

Jul*_*nck -2

You can use concatenate (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.concatenate.html):

m_new = np.concatenate((m1, m2))
Run Code Online (Sandbox Code Playgroud)

For example,

a = np.zeros((5, 3))
b = np.zeros((4, 3))
print np.concatenate((a, b)).shape
# (9, 3)
Run Code Online (Sandbox Code Playgroud)

That still works if you use matrices instead of arrays:

print np.concatenate((np.matrix(a), np.matrix(b))).shape
# (9, 3)
Run Code Online (Sandbox Code Playgroud)