将数字列表操作为列或单独的列表以便在Python中进行绘图

时间:2017-05-23 21:04:44

标签: python list numpy matplotlib

我对Python很陌生,所以如果这个很容易,我很抱歉。 (这对我来说似乎很容易,但我还在挣扎......)

我已经完成了从IV扫描中从Keithley SMU 2400中踢回的数字列表,并且按照以下顺序排列结果列表:

[v0, c0, t0, v1, c1, t1, v2, c2, t2, ...]

由于PyVisa的query_ascii_values命令,该列表似乎是一个数字列表(不是ascii值列表)。

如何将这些解析为数字列(对于csv或类似的输出)或三个单独的列表,以便在matplotlib中进行绘图。

我爱的输出最后会与此类似:

volts = [v0, v1, v2, v3...]
currents = [c0, c1, c2, c3...]
times = [t0, t1, t2, t3...]

应该可以更轻松地在matplotlib中绘图(或输出到csv文本文件中)。

请注意我的v0,v1等只是我的名字,它们目前都是数字。

我会在Matlab中尝试过类似的内容:

volts = mydata(1:3:length(mydata));

(通过从1开始计算每三个项目来调用索引)

感谢您的想法和帮助!还有 - 像这样的简单数据调整有什么好的资源,我应该得到一份?

2 个答案:

答案 0 :(得分:5)

简单切片工作。因此,以volts, currents, times = A[::3], A[1::3], A[2::3] 作为输入列表,我们将 -

select t.Task_ID,t.task_creator_ID,ttig.Task_taker_Task_taker_ID
from 
Task as t left join assigned_to as tig on t.Task_ID= tig.Task_ID 
        left join taker_in_Group as ttig on tig.Group_ID=ttig.Group_ID 
        left join Task_taker as tt on tt.Task_taker_ID = ttig.Task_taker_Task_taker_ID
        left join task_in_typ as titp on titp.task_ID = t.Task_ID
        left join Typ as tp on titp.typ_ID = tp.typ_ID
        where t.task_creator_ID = 'seam4339';

答案 1 :(得分:2)

如果你想保留一份清单,那么Divakar的解决方案效果很好。但是,如果你以后要进行分析和绘图,你真的想要使用一个numpy数组,这使得你想要做的事情更容易。

要将它变成一个numpy数组,你可以这样做:

>>> import numpy as np
>>> 
>>> mydata = np.array(mydata)

要将其变为单个变量,您可以这样做:

>>> volts, currents, times = mydata.reshape(-1,3).T

这会重塑为Nx3数组,然后将其转换为3xN数组,然后将每一行放在一个单独的变量中。这样做的一个优点是它非常快,因为只创建了一个数组,不像列表方法需要创建4个列表(特别是如果你将数据直接放入一个numpy数组中)。

您还可以使用Divakar与列表一起使用的相同方法,同样避免创建其他列表。

话虽如此,我强烈建议你研究一下熊猫。它将使像更多这样的数据更容易跟踪。您可以使用信息名称标记数组的列,这意味着您不需要将此类数据拆分为三个变量来跟踪它。