我有一个混合了不同数据类型的 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/