gpt4 book ai didi

python - np.genfromtxt 不会生成二维数组

转载 作者:行者123 更新时间:2023-12-01 01:57:49 26 4
gpt4 key购买 nike

我有一个 csv 文件,其中包含:

0812,EP2463,R,FEIGE
0812,EP2466,R,FEIGE
0816,EP2462,R,FEIGE
0816,EP2460,R,FEIGE

我需要将其转换为二维字符串数组。当我尝试时

data = np.genfromtxt("data.csv", delimiter=',', dtype=None)

我得到一个一维数组

[['\xef\xbb\xbf0812' 'EP2463 'R' 'FEIGE']
['0812' 'EP2466' 'R' 'FEIGE']
['0816' 'EP2462' 'R' 'FEIGE']
['0816' 'EP2460' 'R' 'FEIGE']]

有更好的方法吗?

最佳答案

在使用 numpy 1.14 的 PY3 (ipython) session 中,以及使用 BOM 编写为 UTF8 的文件(在 Linux 中):

In [166]: np.genfromtxt('stack49969840.txt', delimiter=',', dtype=None,encoding='utf8')
Out[166]:
array([['\ufeff0812', 'EP2463', 'R', 'FEIGE'],
['0812', 'EP2466', 'R', 'FEIGE'],
['0816', 'EP2462', 'R', 'FEIGE'],
['0816', 'EP2460', 'R', 'FEIGE']], dtype='<U6')

In [167]: np.genfromtxt('stack49969840.txt', delimiter=',', dtype=None,encoding='utf-8-sig')
Out[167]:
array([(812, 'EP2463', 'R', 'FEIGE'), (812, 'EP2466', 'R', 'FEIGE'),
(816, 'EP2462', 'R', 'FEIGE'), (816, 'EP2460', 'R', 'FEIGE')],
dtype=[('f0', '<i8'), ('f1', '<U6'), ('f2', '<U1'), ('f3', '<U5')])

使用dtype=None,并忽略 BOM,该数组是具有结构化(复合)dtype 的 1d 数组。也就是说,它推断第一列可以读取为整数。

作为字符串加载,给出一个二维字符串数据类型(这里是 unicode,但也可以是字节串):

In [169]: np.genfromtxt('stack49969840.txt', delimiter=',', dtype=str,encoding='utf-8-sig')
Out[169]:
array([['0812', 'EP2463', 'R', 'FEIGE'],
['0812', 'EP2466', 'R', 'FEIGE'],
['0816', 'EP2462', 'R', 'FEIGE'],
['0816', 'EP2460', 'R', 'FEIGE']], dtype='<U6')

同一个文件,以二进制方式读取为:

In [8]: open('stack49969840.txt',mode='rb').read()
Out[8]: b'\xef\xbb\xbf0812,EP2463,R,FEIGE\n0812,EP2466,R,FEIGE\n0816,EP2462,R,FEIGE\n0816,EP2460,R,FEIGE\n'

用你的额外字符串:

你的额外字符串是

In [168]: print('\xef\xbb\xbf')


关于python - np.genfromtxt 不会生成二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969840/

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