How to convert
["1.1", "2.2", "3.2"]
to
[1.1, 2.2, 3.2]
in NumPy?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Well, if you’re reading the data in as a list, just do np.array(map(float, list_of_strings)) (or equivalently, use a list comprehension). (In Python 3, you’ll need to call list on the map return value if you use map, since map returns an iterator now.)
However, if it’s already a numpy array of strings, there’s a better way. Use astype().
import numpy as np x = np.array(['1.1', '2.2', '3.3']) y = x.astype(np.float)
Method 2
Another option might be numpy.asarray:
import numpy as np a = ["1.1", "2.2", "3.2"] b = np.asarray(a, dtype=float) print(a, type(a), type(a[0])) print(b, type(b), type(b[0]))
resulting in:
['1.1', '2.2', '3.2'] <class 'list'> <class 'str'> [1.1 2.2 3.2] <class 'numpy.ndarray'> <class 'numpy.float64'>
Method 3
If you have (or create) a single string, you can use np.fromstring:
import numpy as np x = ["1.1", "2.2", "3.2"] x = ','.join(x) x = np.fromstring( x, dtype=np.float, sep=',' )
Note, x = ','.join(x) transforms the x array to string '1.1, 2.2, 3.2'. If you read a line from a txt file, each line will be already a string.
Method 4
You can use this as well
import numpy as np x=np.array(['1.1', '2.2', '3.3']) x=np.asfarray(x,float)
Method 5
You can use np.array() with dtype = float:
import numpy as np x = ["1.1", "2.2", "3.2"] y = np.array(x,dtype=float)
Output:
array([1.1, 2.2, 3.2])
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0