python - 如何将具有数字和非数字条目的 numpy 数组转换为所有 float

标签 python pandas numpy types

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

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.arrays 只能有一种数据类型(通常是数字类型之一,例如 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)

关于python - 如何将具有数字和非数字条目的 numpy 数组转换为所有 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434990/

相关文章:

python - eb.exe部署“: Errno 13 Permission denied: './pagefile.sys'

python - 具有 3 个不同选项的按钮

python - 解释sklearn的scale()和乘以STD并加上平均值之间的区别

python - 在 python 中使用多重处理读取多个大型 csv 文件的最佳策略?

pandas 用字符串或整数替换 boolean 值

python - NumPy 使用索引列表选择每行的特定列索引

python - 如何判断我的指数曲线在 SciPy 中的拟合效果如何?

python - Pandas pd.merge "TypeError: string indices must be integers, not str"

python - 检查对象是数字还是 bool 值

python - Numpy 中的时间戳