使用 genfromtxt 分割数据

2024-03-31

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

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

效果很好,只是它似乎没有将我的两列读入二维数组。我正进入(状态:

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

But I think想:

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

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


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

一旦您学会如何使用它们,它们实际上非常有用。你不能拥有带有浮点和字符串的二维数组,但是使用结构化数组,你可以!

例如:

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.])

注意y['myfloat'] gives float是因为dtype论点,即使在文件中它们是ints.

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

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

如果您正在对这样的数据结构进行大量操作,您可能需要研究一下pandas http://pandas.pydata.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 genfromtxt 分割数据 的相关文章

随机推荐