Hey, In the last weeks I tested `np.asarray(np.bmat(....))` as `stack` function and it works quite well. So the question persits: If `bmat` already offers something like `stack` should we even bother implementing `stack`? More code leads to more bugs and maintenance work. (However, the current implementation is only 5 lines and by using `bmat` which would reduce that even more.) Best, Stefan On Fri, Sep 19, 2014 at 4:47 PM, Paul Hobson <pmhobson@gmail.com> wrote:

Hey Ben,

Side note: I've had to do the same thing for stitching curvilinear model grid coordinates together. Usings pandas DataFrames indexed by `i` and `j` is really good for this. You can offset the indices directly, unstack the DF, and the pandas will align for you.

Happy to send an example along if you're curious. -p

On Mon, Sep 8, 2014 at 9:55 AM, Benjamin Root <ben.root@ou.edu> wrote:

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@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@gmail.com> wrote:

On Mon, Sep 8, 2014 at 7:41 AM, Sturla Molden <sturla.molden@gmail.com> wrote:

Stefan Otte <stefan.otte@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@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion

_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion

_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion