将多类型2D矩阵转换为浮点矩阵?

时间:2016-11-20 03:48:58

标签: python matrix casting

我将数据设置为2D矩阵,现在我有一个多类型矩阵矩阵,我需要将所有值转换为浮点数而不是字符串。

例如,我的矩阵的一行是这样的:[' 0',' N',' 1.1',' 0.555& #39;,'否',' 23','是'] 我试图这样做,但我将面临一个错误:

floatMatrix = [ [ np.float64(eachVal) for eachVal in row ] for row in data]

错误是这样的: ValueError:无法将字符串转换为float:' N'

2 个答案:

答案 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]