On Wed, Feb 8, 2023 at 3:19 PM Sebastian Berg <[email protected]>
wrote:

> On Wed, 2023-02-08 at 14:31 +0100, Francesc Alted wrote:
> > On Wed, Feb 8, 2023 at 1:42 PM Sebastian Berg <
> > [email protected]>
> > 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 -- [email protected]
> > > > To unsubscribe send an email to [email protected]
> > > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > > > Member address: [email protected]
> > >
> > >
> > > _______________________________________________
> > > NumPy-Discussion mailing list -- [email protected]
> > > To unsubscribe send an email to [email protected]
> > > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > > Member address: [email protected]
> > >
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list -- [email protected]
> > To unsubscribe send an email to [email protected]
> > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > Member address: [email protected]
>
>
> _______________________________________________
> NumPy-Discussion mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: [email protected]
>


-- 
Francesc Alted
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: [email protected]

Reply via email to