gpt4 book ai didi

python - 如何在 python numpy.bytes_ 类型上使用 split()? (从文件中读取字典)

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:06 26 4
gpt4 key购买 nike

我想将数据从(非常大、以空格分隔、两列)文本文件读取到 Python 字典中。我试图用 for 循环来做到这一点,但那太慢了。使用 numpy loadtxt 将其读取到结构数组中然后将其转换为字典要快得多:

data = np.loadtxt('filename.txt', dtype=[('field1', 'a20'), ('field2', int)], ndmin=1)
result = dict(data)

但这肯定不是最好的方法吧?有什么建议吗?

我需要其他东西的主要原因是以下内容不起作用:

data[0]['field1'].split(sep='-')

它导致错误信息:

TypeError: Type str doesn't support the buffer API

如果 split() 方法存在,为什么我不能使用它?我应该使用不同的数据类型吗?或者是否有不同的(快速)方式来读取文本文件?还有什么我想念的吗?

版本: python 版本 3.3.2numpy 版本 1.7.1

编辑:data['field1'].split(sep='-') 更改为 data[0]['field1'].split(sep='-')

最佳答案

标准库 split 返回可变数量的参数,具体取决于分隔符在字符串中出现的次数,因此不太适合数组操作。顺便说一句,我的 char numpy 数组(我运行的是 1.7)没有 split 方法。

您确实有 np.core.defchararray.partition,它与 all the other string operations 类似但不会对矢量化造成问题。 :

>>> a = np.array(['a - b', 'c - d', 'e - f'], dtype=np.string_)
>>> a
array(['a - b', 'c - d', 'e - f'],
dtype='|S5')
>>> np.core.defchararray.partition(a, '-')
array([['a ', '-', ' b'],
['c ', '-', ' d'],
['e ', '-', ' f']],
dtype='|S2')

关于python - 如何在 python numpy.bytes_ 类型上使用 split()? (从文件中读取字典),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953928/

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