gpt4 book ai didi

python - 如何操作 numpy.loadtxt 后的数据?

转载 作者:行者123 更新时间:2023-11-28 20:47:13 27 4
gpt4 key购买 nike

我有如下原始数据。例如,我们加载第一行有 xlabel,第一列是 ylabel 的文本文件。让调用文件名为“131014-data-xy-conv-1.txt”。

Y/X (mm),   0,  10, 20, 30, 40
686.6, -5.02, -0.417, 0, 100.627, 0
694.08, -5.02, -4.529, -17.731, -5.309, -3.535
701.56, 1.869, -4.529, -17.731, -5.309, -3.535
709.04, 1.869, -4.689, -17.667, -5.704, -3.482
716.52, 4.572, -4.689, -17.186, -5.704, -2.51
724, 4.572, -4.486, -17.186, -5.138, -2.51
731.48, 6.323, -4.486, -16.396, -5.138, -1.933
738.96, 6.323, -4.977, -16.396, -5.319, -1.933
746.44, 7.007, -4.251, -16.577, -5.319, -1.688
753.92, 7.007, -4.251, -16.577, -5.618, -1.688
761.4, 7.338, -3.514, -16.78, -5.618, -1.207
768.88, 7.338, -3.514, -16.78, -4.657, -1.207
776.36, 7.263, -3.877, -15.99, -4.657, -0.822

(Q1) 正如你所看到的原始数据,它们分别在第 1 行、第 1 列中有 xlabel 和 ylabel。如果我使用 numpy.loadtxt 函数,如何拆分“xs”和“ys”?

rawdata = numpy.loadtxt('131014-data-xy-conv-1.txt')
xs, ys, data = func(rawdata)

我是否必须实现额外的逻辑?或者有什么功能吗?

最佳答案

实际上,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.readlinef 读取了第一行,剩下的可以使用 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]])

关于python - 如何操作 numpy.loadtxt 后的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19361712/

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