【问题标题】:joining two numpy matrices加入两个 numpy 矩阵
【发布时间】:2012-08-28 02:54:36
【问题描述】:

如果您有两个 numpy 矩阵,如何将它们合并为一个?它们应该水平连接,以便

[[0]         [1]               [[0][1]
 [1]     +   [0]         =      [1][0]
 [4]         [1]                [4][1]
 [0]]        [1]]               [0][1]]

例如,使用这些矩阵:

>>type(X)
>>type(Y)
>>X.shape
>>Y.shape
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.matrixlib.defmatrix.matrix'>
(53, 1)
(53, 1)

我已经尝试过 hstack 但出现错误:

>>Z = hstack([X,Y])

Traceback (most recent call last):
  File "labels.py", line 85, in <module>
    Z = hstack([X, Y])
  File "C:\Python27\lib\site-packages\scipy\sparse\construct.py", line 263, in h
stack
    return bmat([blocks], format=format, dtype=dtype)
  File "C:\Python27\lib\site-packages\scipy\sparse\construct.py", line 329, in b
mat
    raise ValueError('blocks must have rank 2')
ValueError: blocks must have rank 2

【问题讨论】:

  • 它应该可以工作。奇怪的是,您的错误消息指的是稀疏矩阵,而您的 type(X) 表示您有矩阵而不是稀疏矩阵。

标签: python multidimensional-array matrix numpy scipy


【解决方案1】:

从回溯来看,您似乎已经完成了from scipy.sparse import * 或类似的操作,因此numpy.hstackscipy.sparse.hstack 遮蔽。 numpy.hstack 工作正常:

>>> X = np.matrix([[0, 1, 4, 0]]).T
>>> Y = np.matrix([[1, 0, 1, 1]]).T
>>> np.hstack([X, Y])
matrix([[0, 1],
        [1, 0],
        [4, 1],
        [0, 1]])

【讨论】:

  • +1 谢谢.. 是的,我用的是scipy.sparse.hstack
  • @Zach:不客气。有点遗憾scipy.sparse.hstack 无法处理稠密矩阵。
  • 是的,同样不幸的是,scipy 和 numpy 都具有与导入时同名的函数,在调用哪个方法时可能会出现命名空间混淆!
猜你喜欢
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
相关资源
最近更新 更多