首页 > 解决方案 > 如何访问多个拆分数组进行绘图?

问题描述

所以我从一大块数据开始:许多列、数千行、100 个单独的测量值。我将数据放在一个数组中,然后使用 split_array 将一个巨大的数组拆分为 100 个不同的测量值。现在我需要在同一个图上绘制所有 100 个测量值。我的问题是我不确定如何访问拆分的数组。拆分后的数组如下所示:

[array([[21.4284003, 0, 1, 4.0482, 92.2, 230.6, 0, 0, ' NaN '],
        [21.4364002, 0, 1, 3.9745, 91.8, 240.9, 0, 0, ' NaN '],
        ...
        [21.4704002, 0, 1, 3.8645, 91.8, 240.9, 0, 0, ' NaN ']], dtype=object),
 array([[22.4958395, 1, 1, 4.5837, 90.2, 285.9, 0, 0, ' NaN '], so on]

我只对绘制每个数组的第一列和第四列感兴趣,我使用了一些基本的绘图代码,如下所示。

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
time = split_array[:,0]
conductance = split_array[:,3]
ax.line(time, conductance)
plt.show()

当我运行它时,我收到错误消息“列表索引必须是整数或切片,而不是元组”,错误指向第 3 行。我的猜测是每个数组都被存储为一个元组,而 split_array[:,0]指的是第一个数组,而不是每个数组中的第一列。我无法找到有关绘制拆分数组的太多信息,因此不胜感激。

标签: pythonarraysplot

解决方案


目前尚不完全清楚您要做什么,但如果您的数据是这样的数组列表:

import numpy as np
from matplotlib import pyplot as plt
data = [np.array([[21.4284003, 0, 1, 4.0482, 92.2, 230.6, 0, 0, ' NaN '],
                  [21.4364002, 0, 1, 3.9745, 91.8, 240.9, 0, 0, ' NaN '],
                  [21.4704002, 0, 1, 3.8645, 91.8, 240.9, 0, 0, ' NaN ']], dtype=object),
        np.array([[22.4958395, 1, 1, 4.5837, 90.2, 285.9, 0, 0, ' NaN '],
                  [22.5958395, 1, 1, 4.7837, 90.2, 285.9, 0, 0, ' NaN '],
                  [22.6958395, 1, 1, 4.9837, 90.2, 285.9, 0, 0, ' NaN ']], dtype=object)
                  ]

您需要遍历列表并绘制套件中的每个单独数组:

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
for a in data:
    time = a[:,0]
    conductance = a[:,3]
    ax.plot(time, conductance)
plt.show()

推荐阅读