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

时间:2014-06-10 15:19:39

标签: python numpy

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

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

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

  

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

我的部分颂歌

 value=np.array(value) 
 value.astype(float)

1 个答案:

答案 0 :(得分:5)

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

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

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

a = np.array(['-0.399917', '0.441786', ''])
a = np.array(['-0.399917', '0.441786', 'spam'])

您的数组中可能存在空值,字符串值或类似内容。

如果值为空,则可以执行类似于建议的here

a[a==''] = '0'

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

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