我正在尝试使用reduce()函数来创建一个水平堆叠多个数组的函数hstack() 。作为一个简单的例子,让我们说
>>>>M=eye((4))
>>>>M
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
>>>>hstack([M,M])
array([[ 1., 0., 0., 0., 1., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 1., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 1., 0.],
[ 0., 0., 0., 1., 0., 0., 0., 1.]])
这可以按我的意愿工作。现在我定义
>>>> hstackm = lambda *args: reduce(hstack, args)
并尝试从上一个案例中执行hstack()
>>>>hstackm([M,M])
[array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]]),
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])]
这是不正确的。如何定义hstackm()以获得正确的输出?
如果可能的话,我的最终目标是创建一个hstackm()函数来堆叠 SPARSE 矩阵。就像是,
hstackm = lambda *args: reduce(sparse.hstack, args).
_*args_ 将是csr或 _lil_matrix_
谢谢你