如何精简Python中字符串转浮点后计算均值与标准差的代码
精简后的一维数组均值与标准差计算代码
精简版代码
import numpy as np # 一步完成筛选、类型转换,直接计算均值和标准差 genericInfoSize_float = np.array([float(sz) for sz, typ in zip(messageSize, messageType) if "GENERIC_INFO" in typ]) genericInfo_mean, genericInfo_std = np.mean(genericInfoSize_float), np.std(genericInfoSize_float) print(genericInfo_mean, genericInfo_std)
高效向量化实现(适用于numpy数组输入)
如果messageType和messageSize本身已是numpy数组,可借助numpy向量化操作进一步优化性能:
import numpy as np # 转换为numpy数组并生成布尔筛选掩码 msg_type_arr = np.array(messageType) msg_size_arr = np.array(messageSize, dtype=float) mask = np.char.find(msg_type_arr, "GENERIC_INFO") != -1 # 直接基于掩码计算均值和标准差 genericInfo_mean, genericInfo_std = msg_size_arr[mask].mean(), msg_size_arr[mask].std() print(genericInfo_mean, genericInfo_std)
精简说明
- 合并了索引提取、元素筛选、类型转换三个步骤,大幅减少中间变量
- 第一种方式通过
zip同时遍历两个数组,直接生成转换后的float列表,代码紧凑直观 - 第二种方式利用numpy的向量化字符操作生成布尔掩码,避免Python层面的循环,处理大数据量时性能更优
内容的提问来源于stack exchange,提问作者Eris Dhroso
相关产品推荐
相关产品推荐

