是否存在Numpy函数可实现数组单个元素与其余元素类型不同的转换?
实现方案
你原有代码会将整行分割后的所有元素统一转换为float类型,只需拆分处理每行的前n-1个元素和最后1个元素即可,修改后的代码如下:
import numpy as np # 推荐用with上下文管理器操作文件,自动完成资源释放 with open('file.txt', 'r') as file_: lines = file_.readlines() data = [] for row in lines: temp = row.split() # 前n-1个元素转float64,最后一个元素保留字符串 float_part = [np.float64(item) for item in temp[:-1]] last_item = temp[-1] # 使用object类型numpy数组兼容不同数据类型 data.append(np.array(float_part + [last_item], dtype=object))
补充说明
- 如果不需要强制使用numpy数组,也可以直接用Python原生列表存储,使用灵活性更高:
for row in lines: temp = row.split() processed_row = [float(i) for i in temp[:-1]] + [temp[-1]] data.append(processed_row) - 如果最后一个元素可能存在空格分割的异常,可自行增加边界判断逻辑,避免索引溢出。
内容的提问来源于stack exchange,提问作者Michael Bonnet
相关产品推荐
相关产品推荐

