[Numpy-discussion] Generalize hstack/vstack --> stack; Block matrices like in matlab

Joseph Martinot-Lagarde joseph.martinot-lagarde at m4x.org
Mon Sep 8 16:39:49 EDT 2014


Le 08/09/2014 16:41, Sturla Molden a écrit :
> Stefan Otte <stefan.otte at gmail.com> wrote:
>
>>      stack([[a, b], [c, d]])
>>
>> In my case `stack` replaced `hstack` and `vstack` almost completely.
>>
>> If you're interested in including it in numpy I created a pull request
>> [1]. I'm looking forward to getting some feedback!
>
> As far as I can see, it uses hstack and vstack. But that means a and b have
> to have the same number of rows, c and d must have the same rumber of rows,
> and hstack((a,b)) and hstack((c,d)) must have the same number of columns.
>
> Thus it requires a regularity like this:
>
> AAAABB
> AAAABB
> CCCDDD
> CCCDDD
> CCCDDD
> CCCDDD
>
> What if we just ignore this constraint, and only require the output to be
> rectangular? Now we have a 'tetris game':
>
> AAAABB
> AAAABB
> CCCCBB
> CCCCBB
> CCCCDD
> CCCCDD
>
> or
>
> AAAABB
> AAAABB
> CCCCBB
> CCCCBB
> CCCCBB
> CCCCBB

stack([stack([[a], [c]]), b])

>
> This should be 'stackable', yes? Or perhaps we need another stacking
> function for this, say numpy.tetris?
The function should be implemented for its name only ! I like it !
>
> And while we're at it, what about higher dimensions? should there be an
> ndstack function too?
>
>
> Sturla
>





More information about the NumPy-Discussion mailing list