[Numpy-discussion] Why ndarray provides four ways to flatten?

Stephan Hoyer shoyer at gmail.com
Wed Oct 29 13:34:13 EDT 2014


On Wed, Oct 29, 2014 at 2:16 AM, Sebastian Berg <sebastian at sipsolutions.net>
wrote:

> On Di, 2014-10-28 at 14:03 -0400, Alan G Isaac wrote:
> I don't really like flat (it is a pretty old part of numpy), but I
> agree, while you can force nditer to be C-contiguous, nditer has its own
> problems and is also pretty complex. I would argue that nditer it is a
> "you know what you are doing" type of function... Or of course if you
> want to understand the C-Api.
> Unless you keep in mind how buffers are copied around inside it, using
> half its features is dangerous.
>

One other subtle way in which nditer and falt differ is that nditer returns
0-dimensional arrays, not scalars.

It turns out there is actually no way in numpy to iterate in the fastest
possible order ('K') over an N-dimensional array in Python without the
overhead of creating 0-dimensional arrays. This came up recently an as
issue for numba:
https://github.com/numba/numba/issues/841

So although this discussion has mostly been about consolidating options,
this is at least one feature that we might like to add. Honestly, this is
likely only to be an issue for projects like Numba that take valid
python/numpy code and compile it. If you're writing C/Cython, you can just
use the NumPy C API.

Cheers,
Stephan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20141029/f3dffa67/attachment.html>


More information about the NumPy-Discussion mailing list