Python - 如何有效地从对象列表中构造numpy数组

时间:2016-01-15 15:51:53

标签: python numpy matplotlib

我正在构建一个python应用程序,我在其中检索一个对象列表,我想绘制它们(用于绘制我使用matplotlib)。列表中的每个对象都包含两个属性。

例如,假设我有列表rawdata,存储在其中的对象具有属性timestamp和power

rawdata[0].timestamp == 1
rawdata[1].timestamp == 2
rawdata[2].timestamp == 3

rawdata[0].power == 1232.547
rawdata[1].power == 2525.423
rawdata[2].power == 1125.253

我希望能够绘制这两个属性所代表的两个维度,并且我希望以时间和空间有效的方式进行。这意味着我想避免迭代列表并顺序构造类似numpy数组的东西。

有没有办法应用列表的动态转换?或以某种方式绘制它原样?由于所有信息都已包含在列表中,我认为应该有办法。

我找到的最接近的答案是this,但它包括对列表的连续迭代。

更新

正如Antonio Ragagnin所指出的,我可以使用map内置函数来有效地构造一个numpy数组。但这也意味着我将不得不创建第二个数据结构。我可以使用map将列表动态转换为二维numpy数组吗?

1 个答案:

答案 0 :(得分:3)

来自matplotlib tutorial(强调我的):

  

如果matplotlib仅限于使用列表,那么数字处理将毫无用处。通常,您将使用numpy数组。 实际上,所有序列都在内部转换为numpy数组。

所以你没有把它转换成一个numpy数组,如果不这样做就会失去它matplotlib会。