Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将带有数字和非数字项的numpy数组转换为所有浮点_Python_Pandas_Numpy_Types - Fatal编程技术网

Python 如何将带有数字和非数字项的numpy数组转换为所有浮点

Python 如何将带有数字和非数字项的numpy数组转换为所有浮点,python,pandas,numpy,types,Python,Pandas,Numpy,Types,我有一个混合了不同数据类型的numpy数组:float、int和string。我想将所有浮点和整数转换为浮点,同时保留非数字项不变。目前,当我这样做时: array = np.array(['1', '2', '3', 'string']) array.astype(np.float64) 我得到以下错误: ValueError: could not convert string to float: 'string' 我希望输出如下所示: np.array([1.0, 2.0, 3.0, '

我有一个混合了不同数据类型的numpy数组:float、int和string。我想将所有浮点和整数转换为浮点,同时保留非数字项不变。目前,当我这样做时:

array = np.array(['1', '2', '3', 'string'])
array.astype(np.float64)
我得到以下错误:

ValueError: could not convert string to float: 'string'
我希望输出如下所示:

np.array([1.0, 2.0, 3.0, 'string'])

我也尝试过pd.is_numeric(),但无法理解。这是可行的,还是违反了numpy数组的规则?

您想要的结果是不可能的,因为np.array只能有一种数据类型(通常是数字类型之一,例如float、int等)。。。除非您选择泛型类型
dtype=object
,否则您将失去所有的numpy优点(即所有针对数值的优化)。那你为什么要这么做

如果这真的是您想要的,请尝试以下方法:

array = np.array(['1', '2', '3', 'string'])

def safe_float(x):
    try:
        x = float(x)
    except:
        pass
    return x

array = np.array(list(map(safe_float, array)), dtype=object)
print(array)

array([1.0, 2.0, 3.0, 'string'], dtype=object)