我有一个40维的numpy向量,其值为-0.399917,0.441786 ...
默认情况下,向量的数据类型为| S8(String)
当我尝试使用astype方法更改dtype时,出现以下错误 -
ValueError:无法将字符串转换为float:
我的部分颂歌
value=np.array(value)
value.astype(float)
答案 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。根据您的应用,这可能会也可能不会很危险。通常,会给出代码来指示有关数组元素的内容,您可能不希望对它们进行相同的处理。