Python如何从含字符串的混合列表中提取浮点数?
解决方法:提取列表中的浮点数并转换为float32数组
没问题,我来帮你搞定这个问题~你之前报错的核心原因很明确:原列表里混了字符串元素,np.asarray没法直接把字符串转成float32类型,自然会抛出类型错误。咱们先把浮点数筛选出来,再转数组就顺畅了。
步骤1:精准过滤列表中的浮点数
用列表推导式搭配isinstance()函数,就能轻松提取所有float类型的元素:
listing = ["some string", 0.235, -56.335, -0.889] # 筛选出仅float类型的元素 filtered_listing = [item for item in listing if isinstance(item, float)] # 此时filtered_listing就是你想要的 [0.235, -56.335, -0.889]
步骤2:转换为float32类型的numpy数组
现在列表里全是合法的浮点数了,直接用np.asarray转换就不会报错:
import numpy as np z = np.asarray(filtered_listing, dtype='float32')
如果之后你的列表里可能出现整数(比如10这种int类型),且你想把它们也转换成浮点数保留下来,可以把过滤条件改成检查数值类型:
filtered_listing = [item for item in listing if isinstance(item, (int, float))]
这样int和float都会被保留,转数组时会自动统一转换成float32类型。
内容的提问来源于stack exchange,提问作者hdatas
相关产品推荐
相关产品推荐

