报错信息:ValueError: could not convert string to float: ''
解决方法:在将 float64
类型的 numpy 数组赋值为字符串时,首先需要检查赋值的字符串是否可以转换为 float64
类型。
开发建议:虽然在往指定类型的 numpy 数组中赋值时,numpy 会自动进行隐式的强制类型转换,如果转换失败会直接抛出异常。因为对于开发者来说,这样的隐式强制转换是容易被忽略的,所以建议可以在写入 numpy 数组时候显式地进行转换,从而显式地提醒开发者这里存在强制类型转换,存在转换失败抛出异常的风险。
因为在构造 array
数组时,数组中的值为 float
类型,且没有通过 dtype
指定数组类型,所以数组 array
的 dtype
会被 numpy 自动默认指定为 float64
。
此时,我们给 array
数组中第 1 个元素赋值为字符串 "1.0"
,则 numpy 会自动将字符串 "1.0"
强制转化为 float64
类型。因为字符串 "1.0"
可以强制转换为 float64
类型,所以这样的操作是可以执行的。
但是,如果我们给给 array
数组中第 1 个元素赋值为字符串 "x"
,则 numpy 仍然会自动尝试将字符串 "x"
强制转化为 float64
类型,这显然是不行的,因此会报如下错误。
特别需要注意的是,空字符串 ""
也是无法转化为 float64
类型的,同样会有类似的报错。