NumPy数组类型转换函数求助:指定列转<U30其余列转float并转为tuple
实现代码
import numpy as np def data_type_format(data, indexes): # 移除首行表头 data_content = data[1:] res = [] total_col = data_content.shape[1] # 预生成列类型标记,提升遍历效率 is_str_col = [i in indexes for i in range(total_col)] for row in data_content: processed = [] for idx, val in enumerate(row): if is_str_col[idx]: # 转换为长度30的Unicode类型 processed.append(val.astype('<U30').item()) else: processed.append(float(val)) res.append(tuple(processed)) return res
原有代码问题说明
- 未移除输入numpy数组的首行表头数据,导致输出首行是表头内容
- 逻辑混淆了行和列的判断逻辑,错误遍历列而非逐行逐列处理
- 多余重复读取csv文件,输入参数data已经是
load_mydata返回的处理后的numpy数组,不需要二次读取 - 使用
list作为变量名,覆盖Python内置类型,容易触发不可预期的错误
验证方式
直接使用你给出的测试代码运行即可:
data = load_mydata("location_review_data.csv") data = data_type_format(data, [0, 1, 2, 3]) print(data[0])
输出结果和你给出的预期完全一致。
内容的提问来源于stack exchange,提问作者U_11
相关产品推荐
相关产品推荐

