On Wed, Feb 8, 2023 at 3:19 PM Sebastian Berg <sebast...@sipsolutions.net> wrote:
> On Wed, 2023-02-08 at 14:31 +0100, Francesc Alted wrote: > > On Wed, Feb 8, 2023 at 1:42 PM Sebastian Berg < > > sebast...@sipsolutions.net> > > wrote: > > > > > On Wed, 2023-02-08 at 12:48 +0100, Francesc Alted wrote: > > > > Hi, > > > > > > > > > > > > > > <snip> > > > > > > > Is there a way (or an ongoing effort) to express the variety of > > > > data > > > > types > > > > in NumPy that beats the above (which seems somewhat inconsistent > > > > to > > > > me)? > > > > > > How about using the Python buffer interface format string (maybe > > > with > > > some limitations). > > > > > > > If you mean the array interface ( > > https://numpy.org/doc/stable/reference/arrays.interface.html), this > > is what > > dtype.str provides ( > > https://numpy.org/doc/stable/reference/generated/numpy.dtype.str.html > > ). > > But the limitation here is that structured types are represented by > > the 'V' > > char, which is not properly representing it by any means. > > > > Ah, I was thinking of what the Python buffer protocol uses, which is > what struct uses: > > https://docs.python.org/3/library/struct.html#module-struct > > That has some annoyances for sure, and structured dtypes with field > names need rather strange syntax. Also I think padding bytes at best > are simply fields with an empty name. > But overall, it probably already does a better job than any `str()` for > basic types: > > In [2]: import numpy as np > > In [3]: np.array(0, dtype="i,i,2f") > Out[3]: > array((0, 0, [0., 0.]), > dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<f4', (2,))]) > > In [4]: memoryview(np.array(0, dtype="i,i,2f")).format > Out[4]: 'T{i:f0:i:f1:(2)f:f2:}' > Aha, that's pretty cool, although I don't think this is flexible enough to support e.g. field names or nested fields. After pondering about it, I think we will add a format ID to our spec, and will stick with NumPy as the default. If in the future another format appears that is more well defined, we could still change the representation and use a new ID, while keeping backwards compatibility if needed. Thanks! > > - Sebastian > > > > > > > But other than that, I don't have an obvious idea right now. > > > > > > - Sebsatian > > > > > > > > > > > Thanks! > > > > _______________________________________________ > > > > NumPy-Discussion mailing list -- numpy-discussion@python.org > > > > To unsubscribe send an email to numpy-discussion-le...@python.org > > > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ > > > > Member address: sebast...@sipsolutions.net > > > > > > > > > _______________________________________________ > > > NumPy-Discussion mailing list -- numpy-discussion@python.org > > > To unsubscribe send an email to numpy-discussion-le...@python.org > > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ > > > Member address: fal...@gmail.com > > > > > > > > > _______________________________________________ > > NumPy-Discussion mailing list -- numpy-discussion@python.org > > To unsubscribe send an email to numpy-discussion-le...@python.org > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ > > Member address: sebast...@sipsolutions.net > > > _______________________________________________ > NumPy-Discussion mailing list -- numpy-discussion@python.org > To unsubscribe send an email to numpy-discussion-le...@python.org > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ > Member address: fal...@gmail.com > -- Francesc Alted
_______________________________________________ NumPy-Discussion mailing list -- numpy-discussion@python.org To unsubscribe send an email to numpy-discussion-le...@python.org https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ Member address: arch...@mail-archive.com