从Python中现有的2D数组创建3D数组

从Python中现有的2D数组创建3D数组,python,arrays,dimensions,Python,Arrays,Dimensions,我正在尝试创建具有维度的数组: a(Days,Hours,Station) a(1464,2) 我有61天内2个站点的阵列“a”的每小时数据,因此目前我有以下维度的阵列: a(Days,Hours,Station) a(1464,2) 其中,1464是我拥有的每个站点每小时数据点的数量(24小时*61天)。但是,我想进一步细分,并添加另一个有天的维度,这样维度将是: a(61 days,24 hours/day, 2 stations) 关于如何正确地获取我当前拥有的阵列“a”并将其更

我正在尝试创建具有维度的数组:

a(Days,Hours,Station)
a(1464,2)
我有61天内2个站点的阵列“a”的每小时数据,因此目前我有以下维度的阵列:

a(Days,Hours,Station)
a(1464,2)
其中,1464是我拥有的每个站点每小时数据点的数量(24小时*61天)。但是,我想进一步细分,并添加另一个有天的维度,这样维度将是:

a(61 days,24 hours/day, 2 stations)

关于如何正确地获取我当前拥有的阵列“a”并将其更改为这3个维度,您有什么想法吗?

您可以尝试制作一个61x24x2阵列。这应该起作用:

b = []
for i in xrange(61):
    b.append(a[i*61:(i+1)*61])
如果您的第一个字段是小时*天,那么转换将是: a(x,y)=>a(x//24,x%24,y)

x//24
是楼层划分,因此
1500//24=62
,天。您没有指定,但我假设“小时”字段将是剩余的小时;因此,
x%24
获取剩余的小时数,
1500%25=12
获取小时数。最后,station字段保持不变


我认为不能在Python中修改列表/数组的结构,因此需要创建一个新的列表/数组。我也不确定您是在使用内置列表还是数组。我不太熟悉array类,所以这不是一个完整的答案,但我希望它在算术上为您指明了正确的方向

这将把数组
a
分割成最大长度
大小
的块

def chunks( a, size ):
    arr = iter( a )
    for v in arr:
        tmp = [ v ]
        for i,v in zip( range( size - 1 ), arr ):
            tmp.append( v )

        yield tmp

splitted = list( chunks( a, 24 ) )

哦,好的,很有趣。我想那时我可以这样做。我也读过关于np.rearage(a,(61,2,2))的书,所以我试过了,但我不知道这个函数在幕后到底在做什么。你熟悉这个吗?这也是一个简单的解决方案吗?而且这也不太管用。Splitted的维度是(1,21464)而不是我想要的(61,24,2)。找不到关于np.rearrage的任何信息。我对它一无所知。
a
的形状可能是(21464)吗?这是唯一可能的原因,我能找到,这将导致(1,2,1646)。?是的,这就是为什么!所以我需要以某种方式切换维度,如果我这样做并使用此代码,它就会工作。谢谢Meghana是numpy阵列还是标准阵列?a是numpy阵列。