我将数据设置为2D矩阵,现在我有一个多类型矩阵矩阵,我需要将所有值转换为浮点数而不是字符串。
例如,我的矩阵的一行是这样的:[' 0',' N',' 1.1',' 0.555& #39;,'否',' 23','是'] 我试图这样做,但我将面临一个错误:
floatMatrix = [ [ np.float64(eachVal) for eachVal in row ] for row in data]
错误是这样的: ValueError:无法将字符串转换为float:' N'
答案 0 :(得分:0)
编写一个自定义函数,将矩阵中的元素转换为浮动,如果不可能,即字符串,则返回元素。然后使用该函数转换列表中元素的类型:
def conv(x):
try:
return float(x)
except:
return x
[conv(x) for x in row]
# [0.0, 'N', 1.1, 0.555, 'No', 23.0, 'yes']
答案 1 :(得分:0)
try-except
适合您的情况。我建议比@Psidom更好的功能,因为你想将所有值转换为float。
def convert(x, default=0):
try:
return float(x)
except:
return default
创建转换后的数据:
floatMatrix = [ [ convert(eachVal) for eachVal in row ] for row in data]