Dear Nathaniel, thanks very much for your response.
* Nathaniel Smith <n...@pobox.com> [2014-12-11]: > On Wed, Dec 10, 2014 at 8:26 PM, Valentin Haenel <valen...@haenel.co> wrote: > > I am using numpy version 1.9.0 and Python 2.7.9 and have a question > > about the dtype: > > > > In [14]: np.dtype("<f8") > > Out[14]: dtype('float64') > > > > In [15]: np.dtype(u"<f8") > > Out[15]: dtype('float64') > > > > In [16]: np.dtype([("<f8", "<f8")]) > > Out[16]: dtype([('<f8', '<f8')]) > > > > So far so good. Now what happens if I use unicode? > > > > In [17]: np.dtype([(u"<f8", "<f8")]) > > --------------------------------------------------------------------------- > > TypeError Traceback (most recent call > > last) > > <ipython-input-17-ce004acab7f5> in <module>() > > ----> 1 np.dtype([(u"<f8", "<f8")]) > > > > TypeError: data type not understood > > Yep, looks like a bug to me. (I guess this is particularly relevant > when __future__.unicode_literals is in effect.) If you could point me in the approximate direction, I'll give it a shot. (my best guess would be numpy/core/_internal.py) > > Also, it really does need to be a tuple? > > > > In [18]: np.dtype([["<f8", "<f8"]]) > > --------------------------------------------------------------------------- > > TypeError Traceback (most recent call > > last) > > <ipython-input-18-c82761d7306d> in <module>() > > ----> 1 np.dtype([["<f8", "<f8"]]) > > > > TypeError: data type not understood > > Lists and tuples are both valid inputs to np.dtype, but they're > interpreted differently -- the problem here isn't that you used a > list, it's that if you use a list then numpy expects different > contents. See: > http://docs.scipy.org/doc/numpy/user/basics.rec.html Ok, let me ask a different question---to give you some perspective of what I actually need. I'm trying to roundtrip a dtype through JSON and I'm having some trouble since the tuples are converted into lists( hence my example above.) Those then can't be converted into a dtype instance anymore... The utf-8 thing above is also part of the Problem since JSON gives back unicode objects for strings, but should probably be fixed upstream (i.e. in numpy). Here is how far I get: In [2]: import json The following goes in In [3]: dt = [("<f8", "<f8")] In [4]: inst = np.dtype(dt) In [5]: inst Out[5]: dtype([('<f8', '<f8')]) In [6]: jd = json.dumps(dt) In [7]: dtud = json.loads(jd) And this is what comes back out: In [8]: dtud Out[8]: [[u'<f8', u'<f8']] In [9]: jd Out[9]: '[["<f8", "<f8"]]' In [10]: inst.descr Out[10]: [('<f8', '<f8')] In [11]: np.dtype(dtud) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-11-85f434de7ebe> in <module>() ----> 1 np.dtype(dtud) TypeError: data type not understood Maybe there is a better way to roundtrip a dtype through JSON? Perhaps this is a known and solved problem? best, V- _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion