繁体   English   中英

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

[英]Create 3D array from existing 2D array in Python

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

a(Days,Hours,Station)

我在61天内有2个站点的阵列'a'的每小时数据,因此目前我具有以下尺寸的阵列:

a(1464,2)

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

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拆分为最大长度为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 ) )

如果您的第一个字段是hours * days ,则转换将简单地是:a(x,y)=> a(x // 24,x%24,y)

x // 24是楼层划分,因此1500 // 24 = 62 (天)。 您没有指定,但我假设“小时数”字段为剩余时间; 因此x % 24获得剩余小时数,而1500 % 25 = 12 (小时数)。 最后,桩号字段保持不变。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM