Stefan Krah <[email protected]> wrote:
> Dag Sverre Seljebotn <[email protected]> wrote:
> > Under 2), would it make sense to also export the contents of a
> > Fortran-contiguous buffer as a raw byte stream? I was just the other week
> > writing code to serialize an array in Fortran order to a binary stream.
>
> Probably, since it works now and people might have gotten used to it.
There are two other considerations why a "simple" view should be
C-contiguous:
1) memoryview.tobytes() converts a Fortran-contiguous buffer to the C layout.
I would find it odd if simple_view.tobytes() is different from the raw
memory.
2) There is an initiative (with very broad support) to add a cast method
to memoryview. The following casts are allowed:
- any ND (C-contiguous) -> 1D bytes
- any 1D bytes -> ND (C-contiguous)
This is how it looks (in my private repo):
>>> from _testbuffer import *
>>> nd = ndarray(list(range(12)), shape=[3,4], format="Q")
>>> m1 = memoryview(nd)
>>> m2 = m1.cast('B')
>>> m3 = m2.cast('Q', shape=[3,4])
>>> m4 = m2.cast('Q', shape=[2,2,3])
To summarize, I think it will be more consistent if an implicit cast via
PyBUF_SIMPLE also disallows Fortran arrays. Unless there are waves of
protest here... ;)
Stefan Krah
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion