将numpy数组类型从string更改为float

Abh*_*nan 2 python numpy

我有一个40维的numpy向量,其值为-0.399917,0.441786 ......

默认情况下,向量的数据类型为| S8(String)

当我尝试使用astype方法更改dtype时,我收到以下错误 -

ValueError:无法将字符串转换为float:

我的部分颂歌

 value=np.array(value) 
 value.astype(float)
Run Code Online (Sandbox Code Playgroud)

phi*_*ilE 5

我没有您的确切数据集,但以下代码对我有用:

a = np.array(['-0.399917', '0.441786'])  # (Line 1)
dim = (2, 2, 2, 2)
a = np.tile(a, dim)
b = a.astype(float)
Run Code Online (Sandbox Code Playgroud)

我知道尺寸与你的尺寸不一样,但这不应该有所作为.可能发生的是,矢量中的某些值不是您指定的形式.例如,以下两者都会在(第1行)中使用时引发ValueError:

a = np.array(['-0.399917', '0.441786', ''])
a = np.array(['-0.399917', '0.441786', 'spam'])
Run Code Online (Sandbox Code Playgroud)

您可能在某个地方有数组中的空值,字符串值或类似值.

如果值是空的,你可以不喜欢有人建议在这里:

a[a==''] = '0'
Run Code Online (Sandbox Code Playgroud)

或者你想要的任何价值.只要它们具有模式,您就可以对其他字符串值执行类似的操作.如果他们没有模式,你仍然可以这样做,但是通过寻找所有可能性可能是不可行的.

编辑:如果你不关心字符串是什么,你只需要将它们变成nan,你可以np.genfromtxt按照这里的解释使用.根据您的应用,这可能会也可能不会很危险.通常,会给出代码来指示有关数组元素的内容,您可能不希望对它们进行相同的处理.