gpt4 book ai didi

python - 将 .dat 文件导入为数组

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:21 25 4
gpt4 key购买 nike

我有一个看起来像这样的 .dat 文件。

ID_1,5.0,5.0,5.0,... 
ID_2,5.0,5.0,5.0,...

我正在尝试将数据作为数组导入 Python。

如果我这样做,它会给我一个元组列表。

data = np.genfromtxt('mydat.dat',
dtype=None,
delimiter=',')

但是,当我执行以下操作时,它给出了一个奇怪的结果,可能是因为第一个元素不是 float 。

np.fromfile('mydat.dat', dtype=float)

array([ 3.45301146e-086, 3.45300781e-086, 3.25195588e-086, ...,
8.04331780e-096, 8.04331780e-096, 1.31544776e-259])

对此有什么建议吗?这些是将 .dat 文件作为数组导入 Python 的两种主要方法,但它们似乎无法提供所需的结果。

最佳答案

这是我们读取“mydat.dat”文件的每一行,将每个值转换为 strfloat 然后加载到 numpy 数组

import numpy as np

def is_float(string):
""" True if given string is float else False"""
try:
return float(string)
except ValueError:
return False

data = []
with open('mydat.dat', 'r') as f:
d = f.readlines()
for i in d:
k = i.rstrip().split(",")
data.append([float(i) if is_float(i) else i for i in k])

data = np.array(data, dtype='O')

结果

>>> data
array([['ID_1', 5.0, 5.0, 5.0],
['ID_2', 5.0, 5.0, 5.0]], dtype=object)

此外,如果您可以使用 pandas 读取和操作数据,我会这样做。 pandas 的工作效率很高,尤其是对于较大的数据,并且易于操作。

#read data as csv to a dataframe
>>> df = pd.read_csv('mydat.dat', sep=",", header=None)
>>> df
0 1 2 3
0 ID_1 5.0 5.0 5.0
1 ID_2 5.0 5.0 5.0

#Transposed data with ID numbers as headers
>>> df.T
0 1
0 ID_1 ID_2
1 5 5
2 5 5
3 5 5
>>>

关于python - 将 .dat 文件导入为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46473270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com