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

Benjamin Root ben.root at ou.edu
Mon Sep 8 12:55:34 EDT 2014


A use case would be "image stitching" or even data tiling. I have had to
implement something like this at work (so, I can't share it, unfortunately)
and it even goes so far as to allow the caller to specify how much the
tiles can overlap and such. The specification is ungodly hideous and I
doubt I would be willing to share it even if I could lest I release
code-thulu upon the world...

I think just having this generalize stack feature would be nice start.
Tetris could be built on top of that later. (Although, I do vote for at
least 3 or 4 dimensional stacking, if possible).

Cheers!
Ben Root


On Mon, Sep 8, 2014 at 12:41 PM, Eelco Hoogendoorn <
hoogendoorn.eelco at gmail.com> wrote:

> Sturla: im not sure if the intention is always unambiguous, for such more
> flexible arrangements.
>
> Also, I doubt such situations arise often in practice; if the arrays arnt
> a grid, they are probably a nested grid, and the code would most naturally
> concatenate them with nested calls to a stacking function.
>
> However, some form of nd-stack function would be neat in my opinion.
>
> On Mon, Sep 8, 2014 at 6:10 PM, Jaime Fernández del Río <
> jaime.frio at gmail.com> wrote:
>
>> On Mon, Sep 8, 2014 at 7:41 AM, Sturla Molden <sturla.molden at gmail.com>
>> wrote:
>>
>>> 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
>>>
>>> This should be 'stackable', yes? Or perhaps we need another stacking
>>> function for this, say numpy.tetris?
>>>
>>> And while we're at it, what about higher dimensions? should there be an
>>> ndstack function too?
>>>
>>
>> This is starting to look like the second time in a row Stefan tries to
>> extend numpy with a simple convenience function, and he gets tricked into
>> implementing some sophisticated algorithm...
>>
>> For his next PR I expect nothing less than an NP-complete problem. ;-)
>>
>>
>>> Jaime
>>
>> --
>> (\__/)
>> ( O.o)
>> ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes
>> de dominación mundial.
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
>>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140908/d5b1ffb9/attachment.html>


More information about the NumPy-Discussion mailing list