2014-06-10 59 views
2

我有一个40 - 与像-0.399917,0.441786值尺寸numpy的矢量...变化numpy的阵列型浮动

默认载体的数据类型是| S8(字符串)

当我尝试使用astype方法来改变D型,我碰到下面的错误 -

ValueError: could not convert string to float:

我的部分颂

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

您是否分割了字符串?你可以使用'np.fromstring' – M4rtini

+0

尝试'[float(x)for x in value]''。如果这样工作,用'np.array'包装它。 'astype'不会将字符串转换为浮点数。 – hpaulj

回答

4

我没有你确切的数据集,但下面的代码为我工作:

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

我知道尺寸是不一样的,你有,但这不应该有所作为。可能发生的情况是,向​​量中的某些值不是您指定的格式。例如,下面的两个当他们被用来提高你的ValueError异常(1号线):

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

很可能,你必须要么是空值,字符串值,或者您的数组中的类似地方的东西。

如果值是空的,你可以不喜欢有人建议here:你希望它是

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

或任何价值。只要有一个模式,你可以用其他字符串值做类似的事情。如果他们没有模式,你仍然可以做到这一点,但通过寻找所有可能性可能是不可行的。

编辑:如果你不在乎字符串是什么,你只是希望他们变成nan,你可以使用np.genfromtxthere解释。这可能会也可能不会危险,具体取决于您的应用程序。通常,给出的代码表示有关数组元素的内容,您可能不希望将它们全部对待。