gpt4 book ai didi

python - 使用 genfromtxt 拆分数据

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:55 24 4
gpt4 key购买 nike

使用 Python,我使用 genfromtxt(来自 numpy)将文本文件读入数组:

y = np.genfromtxt("1400list.txt", dtype=[('mystring','S20'),('myfloat','float')])

它工作正常,除了它似乎没有将我的 2 列读入二维数组。我得到:

[('string001', 123.0),('string002', 456.0),('string002', 789.0)]

但我认为会喜欢:

[['string001', 123.0],['string002', 456.0],['string002', 789.0]]

我基本上希望将每条信息作为一个单独的元素,然后我可以对其进行操作。

最佳答案

genfromtxt 返回的内容称为结构化数组。它给出了一个一维元组数组,每个元组都有您指定的dtype

一旦您学会了如何使用它们,这些实际上非常有用。您不能拥有包含 float 和字符串的二维数组,但可以使用结构化数组!

例如:

import numpy as np
from StringIO import StringIO
s = """string001 123
string002 456
string002 789"""
f = StringIO(s)
y = np.genfromtxt(f, dtype=[('mystring', 'S20'), ('myfloat', float)])

这是你目前所拥有的。现在您可以通过以下方式访问 y。您可以使用字段名称 将一列作为一维数组:

>>> y['mystring']
array(['string001', 'string002', 'string002'],
dtype='|S20')

>>> y['myfloat']
array([ 123., 456., 789.])

请注意,由于 dtype 参数,y['myfloat'] 给出了 float,即使在文件中它们是 ints.

或者,您可以使用整数来获取具有给定 dtype 的行作为 tuple:

>>> y[1]
('string002', 456.0)

如果您要像这样对数据结构进行大量操作,您可能需要查看 pandas

关于python - 使用 genfromtxt 拆分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291665/

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