从双维数组打印值

2024-05-12 16:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个二维数组,其中包含我想在Y轴上绘制的值,和一个二维数组,其中包含我想在X轴上绘制的datetime值,我想从这些数组中得到两行与date相对的值。 但这些按原样使用的结构并不像预期的那样工作,因为我得到了一种不同于线图的图

x轴的值(日期):

    [[datetime.datetime(2011, 1, 1, 0, 0, 25, 135000), datetime.datetime(2011, 2, 1, 0, 0, 57, 386000), 
datetime.datetime(2011, 3, 1, 0, 0, 59, 579000), datetime.datetime(2011, 4, 1, 0, 0, 27, 676000), 
datetime.datetime(2011, 5, 1, 0, 0, 25, 135000), datetime.datetime(2011, 6, 1, 0, 0, 26, 414000), 
datetime.datetime(2011, 7, 1, 0, 0, 28, 145000), datetime.datetime(2011, 8, 1, 0, 0, 26, 432000), 
datetime.datetime(2011, 9, 1, 0, 0, 27, 301000), datetime.datetime(2011, 10, 1, 0, 0, 27, 643000), 
datetime.datetime(2011, 11, 1, 0, 0, 27, 673000), datetime.datetime(2011, 12, 1, 0, 0, 28, 294000)], 
[datetime.datetime(2011, 1, 1, 0, 0, 25, 135000), datetime.datetime(2011, 2, 1, 0, 0, 57, 386000), 
datetime.datetime(2011, 3, 1, 0, 0, 59, 579000), datetime.datetime(2011, 4, 1, 0, 0, 27, 676000), 
datetime.datetime(2011, 5, 1, 0, 0, 25, 135000), datetime.datetime(2011, 6, 1, 0, 0, 26, 414000), 
datetime.datetime(2011, 7, 1, 0, 0, 28, 145000), datetime.datetime(2011, 8, 1, 0, 0, 26, 432000), 
datetime.datetime(2011, 9, 1, 0, 0, 27, 301000), datetime.datetime(2011, 10, 1, 0, 0, 27, 643000), 
datetime.datetime(2011, 11, 1, 0, 0, 27, 673000), datetime.datetime(2011, 12, 1, 0, 0, 28, 294000)]]

y轴的值(最小值、最大值):

    [[-8.0, 19.0, 11.0, 6.0, 6.0, 6.0, 6.0, 6.0, 2.0, 2.0, 2.0, 2.0], 
[-12.0, -7.0, -6.0, -6.0, -6.0, -6.0, -6.0, -6.0, -6.0, -6.0, -7.0, -7.0]]

我想要一些关于如何转换这些结构的帮助,以便显示两行min和max over date


Tags: datetimedate绘制数组min结构maxover
1条回答
网友
1楼 · 发布于 2024-05-12 16:41:13

如果您有两个“二维”数组,称为xy,它们具有相同的长度,那么请尝试

import numpy as np
import matplotlib.pyplot as plt

# populate x and y arrays.

x = np.array(x)
y = np.array(y)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(x[:,0], y[:,0], 'g-o')
ax.plot(x[:,1], y[:,1], 'r-x')

一般来说,如果您的数组只有一个维度,您可以简单地

ax.plot(x, y)

如果数组有两组以上的值,可以

for i in range(x.shape[-1]):
    ax.plot(x[:,i], y[:,0])

符号x[:,n]有两部分;:表示从每行获取数据,,n表示从每行获取n+1(0表示第一个)元素。这是因为您的数据结构如下

[[date00, date01],
 [date10, date11],
 [date20, date21],
 ...
 [dateN0, dateN1]]

所以x[:,0]取第一列,x[:,1]取第二列

如果您有一个多维度的大数组,那么可以像x[dim0, dim1, ..., dimN]那样对每个数组进行索引。例如,假设您有一个医学数据的三维数组,其中维度表示patientID、sampleID、病毒载量,您可以通过执行data[0, :, -1]从第一个患者的所有样本中获取最后一个病毒载量,或者通过执行data[0, :, :]从该患者的所有样本中获取所有病毒载量

相关问题 更多 >