python - loadtxt 函数的隐藏错误

标签 python arrays numpy

我尝试使用convert函数将String转换为float,我使用python3.6:

功能是:

def datatype(s):
    it={'N':0,'L':1,'H':2}
    return float(it[str(s.strip(), 'utf-8')])

我的数据是 here

当我尝试加载文件时:

d2=np.loadtxt(path2, delimiter=',', skiprows=1, converters={1: datatype, 2:datatype,3:datatype,4:datatype,5:datatype,6:datatype})

它给了我错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 930, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 930, in <listcomp>
items = [conv(val) for (conv, val) in zip(converters, vals)]
File "C:\Anaconda3\lib\site-packages\numpy\lib\npyio.py", line 659, in floatconv
return float(x)
ValueError: could not convert string to float: b'L '

但我可以手动转换字符串,

>>> datatype(b'L ')
1.0

如何编写转换函数使其不出错?

最佳答案

给定的 csv 有 8 列。 您应该提供第 8 个转换器:

d2 = np.loadtxt(path2, delimiter=',', skiprows=1, converters={
    1: datatype, 2: datatype, 3: datatype, 4: datatype,
    5: datatype, 6: datatype, 7: datatype,
})

或者

d2 = np.loadtxt(path2, delimiter=',', skiprows=1,
                converters=dict.fromkeys(range(1, 8), datatype))

关于python - loadtxt 函数的隐藏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43971481/

相关文章:

python - 需要帮助向量化一些 Python 代码

python - PyCharm 打印结束 ='\r' 语句不起作用

python - 在 pyCUDA 中使用 CUDA 类型

arrays - 如何检查动态数组是否为空

PHP函数或算法来查找数组中的哪些元素加起来正好等于某个数字

Python:选择落在两条任意曲线内的点

python - Celery 任务方法没有被调用

python - 将 var 传递给 Python 单元测试 TestCase 和/或 TestSuite 的正确方法是什么?

arrays - 我如何扩展 Array 以便可以对可选数组进行相等性检查?

python - Pandas 将索引值与相应的索引值进行比较以找到百分比匹配