python numpyloadtxt,定义特定列的类型

2024-09-27 09:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

pythonx有个问题 众所周知,Python3将字节字符串读取为:b'yourString'

我的问题是我想读取一个文本文件,用逗号分隔的四列应该是字符串,另一列是int或{}

我知道有:

data_files=np.genfromtxt(i, names=True, dtype=None, delimiter=",")

我想做点什么(我知道这行不通):

^{pr2}$

我试过了:

alttype = np.dtype('f','s2','i2','i2','f0','f0','f0','s1','f0','f0','s1','f0','f0','s1','f0','f0','f0','f0','f0','f0','f0','f0','f0')

但这只限于四套。我不能把它们全部读作str,因为我之后会对数字进行运算

如有任何帮助,我们将不胜感激。在


Tags: 字符串data字节npfilespython3int逗号
1条回答
网友
1楼 · 发布于 2024-09-27 09:26:53
In [365]: alttype = np.dtype('f','s2','i2','i2','f0','f0','f0','s1','f0','f0','s1','f0','f0','s1','f0','f0','f0','f0','f0','f0','f0','f0','f0')
...
TypeError: function takes at most 4 arguments (23 given)

dtype的参数可以有多种形式、字符串、元组列表和多个字典。它反对参数的性质,而不是你试图定义的字段的数量。另外,genfromtxtdtype更加灵活。这种格式经常使用:dtype="i8,f8,S5"

所以alttype = 'f,S2,i,i,f,f,f,S1,...'可能有用。不要使用f0。在

定义一个小样本'file'(genfromtxt接受行列表):

^{pr2}$

默认负载:

In [384]: np.genfromtxt(txt.splitlines(),names=True,dtype=None)
Out[384]: 
array([(b'a', 23,  2.1, b'c', 2, 3, 7), 
       (b'b', 22,  2. , b'd', 2, 5, 8)], 
      dtype=[('A', 'S1'), ('B', '<i4'), ('C', '<f8'), ('D', 'S1'), ('E', '<i4'), ('F', '<i4'), ('G', '<i4')])

只加载字符串列

In [385]: np.genfromtxt(txt.splitlines(),names=True,dtype=None, usecols=[0,3])
Out[385]: 
array([(b'a', b'c'), (b'b', b'd')], 
      dtype=[('A', 'S1'), ('D', 'S1')])

拼写选定列的数据类型

In [387]: np.genfromtxt(txt.splitlines(),names=True,dtype='U3,U3,i2,f4', usecols=[0,3,1,2])
Out[387]: 
array([('a', 'c', 23,  2.0999999), 
       ('b', 'd', 22,  2.       )], 
      dtype=[('A', '<U3'), ('D', '<U3'), ('B', '<i2'), ('C', '<f4')])

相关问题 更多 >

    热门问题