我的代码如下:
file_ = open('file.txt', 'r')
lines = file_.readlines()
data = []
for row in lines:
temp = row.split()
data.append(np.array(temp).astype(np.float64))
我想将数组中的每一项都转换为 float ,除了最后一项,我想保留最后一项。
我该怎么做?
最佳答案
不,没有函数可以将同一数组的元素转换为不同类型。与常规 Python 列表不同,numpy 数组是同构的,并且存储具有固定物理记录大小的元素,因此数组的每个元素必须始终具有相同的类型。
您可以单独处理字符串并仅将数字部分解析为 numpy 数组:
for row in lines:
temp = row.split()
numbers = temp[:-1]
stringbit = temp[-1]
data.append(np.array(numbers).astype(np.float64))
或者,如果您的数据非常一致并且每行始终具有相同的类型结构,您也许可以使用更复杂的 numpy dtype 和 numpy.genfromtext使每一行成为一个更大数组的元素。
您可能还会找到pandas.DataFrame更适合处理这种异构数据。
包含有用详细信息的相关问题:NumPy array/matrix of mixed types
关于python - 是否有一个 Numpy 函数可以将一个元素转换为与其他元素不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69565023/