如何将此多维列表重塑为二维数组?

2024-09-20 22:52:48 发布

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

我知道这个问题已经被问了很多次了,我试着获得使用多维数组的直觉(herehere),但我不知道这个过程。在

我使用Calendar库中的yeardatescalendar()获得一年中的天、周、月,打包成一个4D列表。在

import calendar

cal = calendar.Calendar()
yr_11 = cal.yeardatescalendar(2011)

返回值是月份行的列表。每个月行最多包含3个月。每个月包含4到6周,每周包含1到7天。在

enter image description here

我试图把它转换成一个二维数组,所以它只是一个星期的列表。但即使我试着这么做,我也不理解输出。在

^{pr2}$

但它抛出一个错误:ValueError: cannot reshape array of size 12 into shape (63,1)

有人能解释一下发生了什么并帮助把它变成一个二维数组吗?在

编辑:基本上我在找这个

[[datetime.date(2010, 12, 27),
 datetime.date(2010, 12, 28),
 datetime.date(2010, 12, 29),
 datetime.date(2010, 12, 30),
 datetime.date(2010, 12, 31),
 datetime.date(2011, 1, 1),
 datetime.date(2011, 1, 2)],
[datetime.date(2011, 1, 3),
 datetime.date(2011, 1, 4),
 datetime.date(2011, 1, 5),
 datetime.date(2011, 1, 6),
 datetime.date(2011, 1, 7),
 datetime.date(2011, 1, 8),
 datetime.date(2011, 1, 9)], ... ]

Tags: import列表datetimedatehere过程数组calendar
1条回答
网友
1楼 · 发布于 2024-09-20 22:52:48

yeardatescalendar返回的嵌套的list具有以下层次结构:

  • 多月区块

因此,例如,yr_11[2][1][3][2]将在第3区块中给出代表第2个月第4周第3天的{}。请记住,索引是从左(最少嵌套)到右(嵌套最多)的,但我们通常以相反的方向读取这些元素(首先是最细粒度的)

为了简化我们的计算,我们可以传递width=12,这样我们的结果将包含一个包含12个月的数据块。在

接下来,只需将list展平并将结果传递给np.array

import calendar

cal = calendar.Calendar()
yr_11 = cal.yeardatescalendar(2011, width=12)

flat = [day for month in yr_11[0] for week in month for day in week]
dates = np.array(flat)

print(dates)

输出:

^{pr2}$

相关问题 更多 >

    热门问题