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

时间:2016-07-05 19:37:23

标签: python arrays dimensions

我正在尝试创建一个尺寸为:

的数组
a(Days,Hours,Station)

我有超过61天的2个电台的阵列'a'的每小时数据,因此目前我有这些尺寸的数组:

a(1464,2)

1464是我每站的每小时数据点数(24小时* 61天)。但是我想进一步细分它并添加另一个具有Days的维度,因此维度将是:

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

关于我如何能够正确地获取我目前所拥有的数组'a'并将其更改为这3个维度的任何想法?

3 个答案:

答案 0 :(得分:1)

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

b = []
for i in xrange(61):
    b.append(a[i*61:(i+1)*61])

答案 1 :(得分:1)

这会将数组a拆分为最大长度为size的块。

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 ) )

答案 2 :(得分:0)

如果您的第一个字段是小时*天,则转换只会是: a(x,y)=> a(x // 24,x%24,y)

x // 24是分区,所以1500 // 24 = 62,日期。你没有指定,但我认为“小时”字段是剩余的小时数;因此x % 24获取剩余小时数,1500 % 25 = 12小时数。最后,电台领域保持不变。

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