该b
标志是 Python3 显示字节字符串的方式。通常 Py3 使用 unicode 字符串,因此字节字符串的显示方式不同。这是显示从纯 ascii 文本文件读取的字符串的 Py3 方式。
带着csv
问题,你真的应该给你试图阅读的文件的一个小样本。但我的猜测是你只有两列花车。如果是这样,np.loadtxt
或者np.genfromtxt
加载它应该没有问题。尽管它确实可以更好地处理带引号的字符串(带空格),但使用csv.reader
它可能比它的价值更多。
pandas
还有一个强大(和快速)的csv
加载器。
如果您的文件只有 2 列浮点数,则其中一个numpy
加载器的结果将是一个 2dnumpy
数组。每行将是您的数据对之一。
我可能会添加一个简单的示例,但如果我从您的示例文件开始会更好。
如果我的示例文件是:
-0.0001835, 4.27E-05
-0.0001835, 4.27E-05
-0.0001835, 4.27E-05
In [77]: np.loadtxt('test.csv')
...
ValueError: could not convert string to float: b'-0.0001835,'
对于这样的错误,正如@Warren 所指出的,修复就像添加分隔符参数一样简单:
In [78]: np.loadtxt('test.csv',delimiter=',')
Out[78]:
array([[ -1.83500000e-04, 4.27000000e-05],
[ -1.83500000e-04, 4.27000000e-05],
[ -1.83500000e-04, 4.27000000e-05]])
我csv
可以这样做:
In [89]: f=open('test.csv')
In [90]: csv_f=csv.reader(f)
In [91]: data=[]
In [92]: for row in csv_f:
data.append(row)
....:
In [93]: data
Out[93]:
[['-0.0001835', ' 4.27E-05'],
['-0.0001835', ' 4.27E-05'],
['-0.0001835', ' 4.27E-05']]
In [94]: np.array(data)
Out[94]:
array([['-0.0001835', ' 4.27E-05'],
['-0.0001835', ' 4.27E-05'],
['-0.0001835', ' 4.27E-05']],
dtype='<U10')
In [95]: np.array(data,float)
Out[95]:
array([[ -1.83500000e-04, 4.27000000e-05],
[ -1.83500000e-04, 4.27000000e-05],
[ -1.83500000e-04, 4.27000000e-05]])