我从telnet机器上读到了一堆数据......它是x,y数据,但它只是逗号分隔,如x1,y1,x2,y2,x3,y3,...
以下是一个示例:
In[28] data[1:500]
Out[28] b'3.00000000E+007,-5.26880000E+001,+3.09700000E+007,-5.75940000E+001,+3.19400000E+007,-5.56250000E+001,+3.29100000E+007,-5.69380000E+001,+3.38800000E+007,-5.40630000E+001,+3.48500000E+007,-5.36560000E+001,+3.58200000E+007,-5.67190000E+001,+3.67900000E+007,-5.51720000E+001,+3.77600000E+007,-5.99840000E+001,+3.87300000E+007,-5.58910000E+001,+3.97000000E+007,-5.35160000E+001,+4.06700000E+007,-5.48130000E+001,+4.16400000E+007,-5.52810000E+001,+4.26100000E+007,-5.64690000E+001,+4.35800000E+007,-5.3938'
我想将其绘制为带有matplot lib的折线图。我已经尝试了struct
包将其转换为双精度而不是字节的列表,但是我遇到了很多问题...然后就是如何处理科学记数法的问题......我想明显地坚持它试图传达的程度,但我不能通过天真地将字节编码交换为双重编码意味着它来做到这一点。
我正在尝试各种我通常会尝试使用C的东西,但我不禁想到Python有更好的方法!
我想我需要将x's
和y's
放入一个numpy数组中,并且不会丢失任何指数表示法...
有什么想法吗?
答案 0 :(得分:4)
首先将数据转换为数字,例如:
data = b'3.00000000E+007,-5.26880000E+001,+3.09700000E+007,-5.75940000E+001'
numbers = map(float, data.split(','))
现在切割数组以单独获取x和y数据并使用matplotlib绘制它
x = numbers[::2]
y = numbers[1::2]
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()
答案 1 :(得分:1)
一次读取两个项目(x1,y1),请尝试以下操作:iterating over two values of a list at a time in python
然后(分而治之的风格),分别处理科学记数法。
一旦你有两个数字列表,那么matplotlib文档可以从那里获取它。
这可能不是一个完整的答案,但它应该让你开始。