Home > Enterprise >  How to convert a string array to float array?
How to convert a string array to float array?

Time:06-21

I basically first converted a multidimensional array to a string array in order to set the values as my dictionary key, and now I need to convert the string array back to a regular float array. For example, what I have is:

str_array = ['[0.25 0.2916666666666667]', '[0.5833333333333334 0.2916666666666667]', 
             '[0.5555555555555555 0.3333333333333332]']

And I literally just need it back as a regular array

array = [[0.25 0.2916666666666667], [0.5833333333333334 0.2916666666666667], 
         [0.5555555555555555 0.3333333333333332]]

I have tried all the following : (*independently)

for i in str_arr:
  i.strip("'")
  np.array(i)
  float(i)

Yet none of them work. They either cannot convert str --> float or they still keep the type as a str. Please help.

CodePudding user response:

Use ast.literal_eval to convert str to another data type

import ast

str_array = ['[0.25 0.2916666666666667]', '[0.5833333333333334 0.2916666666666667]',
             '[0.5555555555555555 0.3333333333333332]']

result = [ast.literal_eval(i.replace(" ", ",")) for i in str_array]
print(result)  # [[0.25, 0.2916666666666667], [0.5833333333333334, 0.2916666666666667], [0.5555555555555555, 0.3333333333333332]]

CodePudding user response:

You can also use the basic function eval.

[eval(x.replace(" ",",")) for x in str_array]
  • Related