Python Numpy数组>分配字符串值和布尔比较

时间:2013-06-19 12:47:44

标签: python string numpy boolean

import numpy as np

我有这个numpy数组:

data = np.array(data)
# assume it has x number of rows and y columns

1)在某一点上,我用字符串值替换第10列值:

data[data[0::,10] == "C",10] = "0"

2)在索引 i 的for循环中,我通过将字符串转换为float来进行此比较 -

x = (data[0::,10].astype(np.float) == i)

这会抛出一个ValueError:无法将字符串转换为float:

为什么?

1 个答案:

答案 0 :(得分:1)

从您的错误消息中,您尝试转换的列中有一些''(空字符串)。 确保您要比较的列只有可转换为浮点数的字符串。您可以创建一个isfloat()函数来为您执行此操作:

def isfloat(x):
    try:
        float(x)
        return True
    except:
        return False
isfloat = np.vectorize(isfloat)

然后在你的例子中使用:

data[ data[:,col] == 'C', col ] = '0'

x = (data[ isfloat(data[:,col]), col ].astype(np.float) == i)