Converting numpy string array to float: Bizarre?
numpy, python, type-conversion
Solution
Numpy arrays must have one `dtype` unless it is structured. Since you have some strings in the array, they must all be strings.
If you wish to have a complex `dtype`, you may do so:
import numpy as np
a = np.array([('Bob','4.56'), ('Sam','5.22'),('Amy', '1.22')], dtype = [('name','S3'),('val',float)])
Note that `a` is now a 1d structured array, where each element is a tuple of type `dtype`.
You can access the values using their field name:
In [21]: a = np.array([('Bob','4.56'), ('Sam','5.22'),('Amy', '1.22')],
...: dtype = [('name','S3'),('val',float)])
In [22]: a
Out[22]:
array([('Bob', 4.56), ('Sam', 5.22), ('Amy', 1.22)],
dtype=[('name', 'S3'), ('val', '<f8')])
In [23]: a['val']
Out[23]: array([ 4.56, 5.22, 1.22])
In [24]: a['name']
Out[24]:
array(['Bob', 'Sam', 'Amy'],
dtype='|S3')
Problem
So, this should be a really straightforward thing but for whatever reason, nothing I'm doing to convert an array of strings to an array of floats is working. I have a two column array, like so: ``` Name Value Bob 4.56 Sam 5.22 Amy 1.22 ``` I try this: ``` for row in myarray[1:,]: row[1]=float(row[1]) ``` And this: ``` for row in myarray[1:,]: row[1]=row[1].astype(1) ``` And this: ``` myarray[1:,1] = map(float, myarray[1:,1]) ``` And they all seem to do something, but when I double check: ``` type(myarray[9,1]) ``` I get ``` <type> 'numpy.string_'> ```