我有一个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)
我没有您的确切数据集,但以下代码对我有用:
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按照这里的解释使用.根据您的应用,这可能会也可能不会很危险.通常,会给出代码来指示有关数组元素的内容,您可能不希望对它们进行相同的处理.