实际上,np.loadtxt
不能很好地单独处理第一行,所以你必须做一些聪明的事情。我会给出两种方法,第一种更短,但第二种更直接
1)您可以通过将第一行读取为标题名称来执行此“破解” :
y_and_data = np.genfromtxt('131014-data-xy-conv-1.txt', names=True, delimiter=',')
x = np.array(y_and_data.dtype.names[1:], int)
y = y_and_data['YX_mm']
data = y_and_data.view(np.float).reshape(-1, len(y_and_data.dtype))[:,1:]
2)但我建议先单独阅读第一行,保存,然后打开其余部分loadtxt
(或genfromtxt
按照我使用和推荐的方式):
with open('131014-data-xy-conv-1.txt', 'r') as f:
x = np.array(f.readline().split(',')[1:], int)
y_and_data = np.genfromtxt(f, delimiter=',')
y = y_and_data[:,0]
data = y_and_data[:,1:]
它是如何工作的,首先打开文件,然后调用它f
:
with open('131014-data-xy-conv-1.txt', 'r') as f:
firstline = f.readline() # read off the first line
firstvalues = firstline.split(',') # split it on the comma
xvalues = firstvalues[1:] # and keep the all but the first elements
x = np.array(xvalues, int) # make it an array of integers (or float if you prefer)
现在已经从f
using读取了第一行f.readline
,可以使用以下命令读取其余部分genfromtxt
:
y_and_data = np.genfromtxt(f, delimiter=',')
现在,其他答案显示了如何拆分其余部分:
y = y_and_data[:,0] # the first column is the y-values
data = y_and_data[:,1:] # the remaining columns are the data
这是输出:
In [58]: with open('131014-data-xy-conv-1.txt', 'r') as f:
....: x = np.array(f.readline().split(',')[1:], int)
....: y_and_data = np.genfromtxt(f, delimiter=',')
....: y = y_and_data[:,0]
....: data = y_and_data[:,1:]
....:
In [59]: x
Out[59]: array([ 0, 10, 20, 30, 40])
In [60]: y
Out[60]:
array([ 686.6 , 694.08, 701.56, 709.04, 716.52, 724. , 731.48,
738.96, 746.44, 753.92, 761.4 , 768.88, 776.36])
In [61]: data
Out[61]:
array([[ -5.02 , -0.417, 0. , 100.627, 0. ],
[ -5.02 , -4.529, -17.731, -5.309, -3.535],
[ 1.869, -4.529, -17.731, -5.309, -3.535],
[ 1.869, -4.689, -17.667, -5.704, -3.482],
[ 4.572, -4.689, -17.186, -5.704, -2.51 ],
[ 4.572, -4.486, -17.186, -5.138, -2.51 ],
[ 6.323, -4.486, -16.396, -5.138, -1.933],
[ 6.323, -4.977, -16.396, -5.319, -1.933],
[ 7.007, -4.251, -16.577, -5.319, -1.688],
[ 7.007, -4.251, -16.577, -5.618, -1.688],
[ 7.338, -3.514, -16.78 , -5.618, -1.207],
[ 7.338, -3.514, -16.78 , -4.657, -1.207],
[ 7.263, -3.877, -15.99 , -4.657, -0.822]])