Hi, On Thu, Sep 13, 2012 at 7:00 PM, Matthew Brett <matthew.br...@gmail.com> wrote: > Hi, > > On Thu, Sep 13, 2012 at 11:31 AM, Matthew Brett <matthew.br...@gmail.com> > wrote: >> On Wed, Sep 12, 2012 at 4:19 PM, Nathaniel Smith <n...@pobox.com> wrote: >>> On Wed, Sep 12, 2012 at 2:46 PM, Matthew Brett <matthew.br...@gmail.com> >>> wrote: >>>> Hi, >>>> >>>> I just noticed that this works for numpy 1.6.1: >>>> >>>> In [36]: np.concatenate(([2, 3], [1]), 1) >>>> Out[36]: array([2, 3, 1]) >>>> >>>> but the beta release branch: >>>> >>>> In [3]: np.concatenate(([2, 3], [1]), 1) >>>> --------------------------------------------------------------------------- >>>> IndexError Traceback (most recent call last) >>>> /Users/mb312/<ipython-input-3-0fa244c8aaa8> in <module>() >>>> ----> 1 np.concatenate(([2, 3], [1]), 1) >>>> >>>> IndexError: axis 1 out of bounds [0, 1) >>>> >>>> In the interests of backward compatibility maybe it would be better to >>>> raise a warning for this release, rather than an error? >>> >>> Yep, that'd be a good idea. Want to write a patch? :-) >> >> https://github.com/numpy/numpy/pull/440 > > Thinking about the other thread, and the 'number of elements' check, I > noticed this: > > In [51]: np.__version__ > Out[51]: '1.6.1' > > In [52]: r4 = range(4) > > In [53]: r3 = range(3) > > In [54]: np.concatenate((r4, r3), None) > Out[54]: array([0, 1, 2, 3, 0, 1, 2]) > > but: > > In [46]: np.__version__ > Out[46]: '1.7.0rc1.dev-ea23de8' > > In [47]: np.concatenate((r4, r3), None) > --------------------------------------------------------------------------- > ValueError Traceback (most recent call last) > /Users/mb312/tmp/<ipython-input-47-e354b8880702> in <module>() > ----> 1 np.concatenate((r4, r3), None) > > ValueError: all the input arrays must have same number of elements > > The change requiring the same number of elements appears to have been > added explicitly by Mark in commit 9194b3af . Mark - what was the > reason for that check?
Appealing for anyone who might understand that part of the code : there's a check in multiarraymodule.c at around line 477: /* * Figure out the final concatenated shape starting from the first * array's shape. */ for (iarrays = 1; iarrays < narrays; ++iarrays) { if (PyArray_SIZE(arrays[iarrays]) != shape[1]) { PyErr_SetString(PyExc_ValueError, "all the input arrays must have same " "number of elements"); return NULL; } } I don't understand the following code so I don't know what this check is for... Cheers, Matthew _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion