Re: [Numpy-discussion] How to distinguish between number and string dypes
A Thursday 27 May 2010 05:52:22 Vincent Davis escrigué: How do I determine if an array's (or column in a structured array) dtype is a number or a string. I see how to determine the actual dtype but all I want to know is if it is a string or a number. I suppose that the `.kind` attribute of dtype would help you: In [2]: s = np.dtype(S3) In [4]: s.kind Out[4]: 'S' In [5]: i = np.dtype(i4) In [6]: i.kind Out[6]: 'i' In [7]: f = np.dtype(f8) In [8]: f.kind Out[8]: 'f' -- Francesc Alted ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] How to distinguish between number and string dypes
On Thu, May 27, 2010 at 1:27 AM, Francesc Alted fal...@pytables.org wrote: A Thursday 27 May 2010 05:52:22 Vincent Davis escrigué: How do I determine if an array's (or column in a structured array) dtype is a number or a string. I see how to determine the actual dtype but all I want to know is if it is a string or a number. I suppose that the `.kind` attribute of dtype would help you: In [2]: s = np.dtype(S3) In [4]: s.kind Out[4]: 'S' In [5]: i = np.dtype(i4) In [6]: i.kind Out[6]: 'i' In [7]: f = np.dtype(f8) In [8]: f.kind Out[8]: 'f' I know about this but the problem is that while the fist example is usable, the others are not great because to know that it is a number I would need to do something like(see below) but I might miss a number dtype, def is_number(obj): if obj.dtype.kind in ('i', 'f',..): return True Pierre GM Check `numpy.lib._iotools._is_string_like` This is ok, but I am having problem making it work, I keep getting an error that I am giving it 2 items and it only takes 1. Obviously I think I am giving it 1. This of course tells me if it is string like but not that is a number. Thanks Vincent -- Francesc Alted ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion *Vincent Davis 720-301-3003 * vinc...@vincentdavis.net my blog http://vincentdavis.net | LinkedInhttp://www.linkedin.com/in/vincentdavis ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] How to distinguish between number and string dypes
On Thu, May 27, 2010 at 6:02 AM, Vincent Davis vinc...@vincentdavis.net wrote: On Thu, May 27, 2010 at 1:27 AM, Francesc Alted fal...@pytables.org wrote: A Thursday 27 May 2010 05:52:22 Vincent Davis escrigué: How do I determine if an array's (or column in a structured array) dtype is a number or a string. I see how to determine the actual dtype but all I want to know is if it is a string or a number. I suppose that the `.kind` attribute of dtype would help you: In [2]: s = np.dtype(S3) In [4]: s.kind Out[4]: 'S' In [5]: i = np.dtype(i4) In [6]: i.kind Out[6]: 'i' In [7]: f = np.dtype(f8) In [8]: f.kind Out[8]: 'f' I know about this but the problem is that while the fist example is usable, the others are not great because to know that it is a number I would need to do something like(see below) but I might miss a number dtype, def is_number(obj): if obj.dtype.kind in ('i', 'f',..): return True Pierre GM Check `numpy.lib._iotools._is_string_like` This is ok, but I am having problem making it work, I keep getting an error that I am giving it 2 items and it only takes 1. Obviously I think I am giving it 1. This of course tells me if it is string like but not that is a number. Thanks Vincent To see if it is a number could you use something like: np.issubdtype(a.dtype, float) or np.issubdtype(a.dtype, int) or np.issubdtype(a.dtype, complex) And for string: np.issubdtype(a.dtype, str) ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] How to distinguish between number and string dypes
On Thu, May 27, 2010 at 8:39 AM, Keith Goodman kwgood...@gmail.com wrote: To see if it is a number could you use something like: np.issubdtype(a.dtype, float) or np.issubdtype(a.dtype, int) or np.issubdtype(a.dtype, complex) And for string: np.issubdtype(a.dtype, str) These are valid but what I don't like is that I need to know the list of possible number types. Basically I don't like a test that fails because I didn't know about a dtype. For string It is ok, the universe of is either string or not string. Maybe this is as good as it gets. I guess my use case is that I want to be sure I can perform math on the values. So maybe I should just do someting like numpy.lib._iotools._is_string_like but _is_number_like, Maybe there is such and I missed it. If not there should be. Vincent ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion *Vincent Davis 720-301-3003 * vinc...@vincentdavis.net my blog http://vincentdavis.net | LinkedInhttp://www.linkedin.com/in/vincentdavis ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] How to distinguish between number and string dypes
On Thu, May 27, 2010 at 11:40, Vincent Davis vinc...@vincentdavis.net wrote: On Thu, May 27, 2010 at 8:39 AM, Keith Goodman kwgood...@gmail.com wrote: To see if it is a number could you use something like: np.issubdtype(a.dtype, float) or np.issubdtype(a.dtype, int) or np.issubdtype(a.dtype, complex) And for string: np.issubdtype(a.dtype, str) These are valid but what I don't like is that I need to know the list of possible number types. Basically I don't like a test that fails because I didn't know about a dtype. For string It is ok, the universe of is either string or not string. Maybe this is as good as it gets. The dtypes have a hierarchy. In [2]: np.issubdtype(float, np.number) Out[2]: True In [3]: np.issubdtype(str, np.number) Out[3]: False -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] How to distinguish between number and string dypes
On 05/27/2010 10:40 AM, Vincent Davis wrote: On Thu, May 27, 2010 at 8:39 AM, Keith Goodman kwgood...@gmail.com mailto:kwgood...@gmail.com wrote: To see if it is a number could you use something like: np.issubdtype(a.dtype, float) or np.issubdtype(a.dtype, int) or np.issubdtype(a.dtype, complex) And for string: np.issubdtype(a.dtype, str) These are valid but what I don't like is that I need to know the list of possible number types. Basically I don't like a test that fails because I didn't know about a dtype. For string It is ok, the universe of is either string or not string. Maybe this is as good as it gets. I guess my use case is that I want to be sure I can perform math on the values. So maybe I should just do someting like numpy.lib._iotools._is_string_like but _is_number_like, Maybe there is such and I missed it. If not there should be. Vincent Can you give an example of what you are trying to do? If some of your string arrays only have string representations of numbers that you want to do the math on then you have to attempt to convert those arrays into a numeric dtype (probably float) using for example asarray(). Bruce import numpy as np a=np.array([1,2,3]) c=np.array(['1','2','3']) d=np.array(['a','b','1']) np.asarray(a, dtype=float) array([ 1., 2., 3.]) np.asarray(c,dtype=float) array([ 1., 2., 3.]) np.asarray(d,dtype=float) Traceback (most recent call last): File stdin, line 1, in module File /usr/lib64/python2.6/site-packages/numpy/core/numeric.py, line 284, in asarray return array(a, dtype, copy=False, order=order) ValueError: invalid literal for float(): a try: ... np.asarray(d,dtype=float) ... except: ... print 'fail' ... fail ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] How to distinguish between number and string dypes
On Thu, May 27, 2010 at 10:25 AM, Bruce Southey bsout...@gmail.com wrote: On 05/27/2010 10:40 AM, Vincent Davis wrote: Can you give an example of what you are trying to do? arr = np.array([(1,'a'),(2,'b')], dtype =[(num,int),(str, |s2)] No supposed I want to know if I can sum the values in 'num'. I could just try and then handle the exemption, but I would like to do something more like for col in arr.dtypes.names: if arr[col] is a number: sum(arr[col]) I think i can use Roberts suggestion, I was not aware of np.number, I guess I need to look into the hierarchy more. The dtypes have a hierarchy. In [2]: np.issubdtype(float, np.number) Out[2]: True In [3]: np.issubdtype(str, np.number) Out[3]: False -- Robert Kern Thanks Vincent If some of your string arrays only have string representations of numbers that you want to do the math on then you have to attempt to convert those arrays into a numeric dtype (probably float) using for example asarray(). Bruce import numpy as np a=np.array([1,2,3]) c=np.array(['1','2','3']) d=np.array(['a','b','1']) np.asarray(a, dtype=float) array([ 1., 2., 3.]) np.asarray(c,dtype=float) array([ 1., 2., 3.]) np.asarray(d,dtype=float) Traceback (most recent call last): File stdin, line 1, in module File /usr/lib64/python2.6/site-packages/numpy/core/numeric.py, line 284, in asarray return array(a, dtype, copy=False, order=order) ValueError: invalid literal for float(): a try: ... np.asarray(d,dtype=float) ... except: ... print 'fail' ... fail ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion *Vincent Davis 720-301-3003 * vinc...@vincentdavis.net my blog http://vincentdavis.net | LinkedInhttp://www.linkedin.com/in/vincentdavis ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
[Numpy-discussion] How to distinguish between number and string dypes
How do I determine if an array's (or column in a structured array) dtype is a number or a string. I see how to determine the actual dtype but all I want to know is if it is a string or a number. *Vincent Davis 720-301-3003 * vinc...@vincentdavis.net my blog http://vincentdavis.net | LinkedInhttp://www.linkedin.com/in/vincentdavis ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion