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

Reply via email to