On Sep 13, 2012, at 8:40 AM, Nathaniel Smith wrote: > On Thu, Sep 13, 2012 at 11:12 AM, Matthew Brett <matthew.br...@gmail.com> > wrote: >> Hi, >> >> While writing some tests for np.concatenate, I ran foul of this code: >> >> if (axis >= NPY_MAXDIMS) { >> ret = PyArray_ConcatenateFlattenedArrays(narrays, arrays, NPY_CORDER); >> } >> else { >> ret = PyArray_ConcatenateArrays(narrays, arrays, axis); >> } >> >> in multiarraymodule.c > > How deeply weird
This is expected behavior. It's how the concatenate Python function manages to handle axis=None to flatten the arrays before concatenation. This has been in NumPy since 1.0 and should not be changed without deprecation warnings which I am -0 on. Now, it is true that the C-API could have been written differently (I think this is what Mark was trying to encourage) so that there are two C-API functions and they are dispatched separately from the array_concatenate method depending on whether or not a None is passed in. But, the behavior is documented and has been for a long time. Reference PyArray_AxisConverter (which turns a "None" Python argument into an axis=MAX_DIMS). This is consistent behavior throughout the C-API. -Travis _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion