如何将具有数字和非数字条目的numpy数组转换为所有浮点数

时间:2018-09-21 00:25:21

标签: python pandas numpy types

我有一个混合了不同dtypes的numpy数组:浮点数,整数和字符串。我想将所有浮点数和整数转换为浮点数,同时保持非数字项不变。目前,当我这样做时:

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数组的规则?

1 个答案:

答案 0 :(得分:2)

您不可能获得理想的结果,因为np.arrays只能具有一种数据类型(通常是数值类型之一,例如float,int,...)...除非您选择通用类型{{1 }},但随后您失去了所有的numpy优缺点(即,所有对数值进行的优化)。那你为什么要这么做?

如果这确实是您想要的,请尝试以下操作:

dtype=object