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

Python Numpy数组>;分配字符串值和布尔比较,python,string,numpy,boolean,Python,String,Numpy,Boolean,我有一个numpy阵列: import numpy as np 1) 有一次,我用字符串值替换第10列值,如下所示: data = np.array(data) # assume it has x number of rows and y columns 2) 在索引为i的for循环中,我通过将字符串转换为float来进行比较- data[data[0::,10] == "C",10] = "0" 这会引发ValueError:无法将字符串转换为浮点: 为什么?从错误消息中,您试图转换的列

我有一个numpy阵列:

import numpy as np
1) 有一次,我用字符串值替换第10列值,如下所示:

data = np.array(data)
# assume it has x number of rows and y columns
2) 在索引为i的for循环中,我通过将字符串转换为float来进行比较-

data[data[0::,10] == "C",10] = "0"
这会引发ValueError:无法将字符串转换为浮点:


为什么?

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

x = (data[0::,10].astype(np.float) == i)
然后在您的示例中使用:

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

您能验证第10列中的所有其他字符串值是否存在(非空字符串)并且是数字吗?我编辑了原始帖子,说我关心第10列。谢谢您的回答。@Selvam在Python中创建函数时,您可以传递一些参数
x
是函数的参数
isfloat()
谢谢。这一行中发生了什么事isfloat=np.vectorize(isfloat)?当您执行isfloat=np.vectorize(isfloat)时,使用
numpy.vectorize
重新定义函数,这相当于在浮点数组上实现Python for循环,使新的
isfloat()
适用于数组。。。
data[ data[:,col] == 'C', col ] = '0'

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