从 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天)。但是我想进一步分解它并添加另一个具有天数的维度,因此维度将是:

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,天。您没有指定,但我假设 "Hours" 字段是剩余时间;所以 x % 24 得到剩余小时数,1500 % 25 = 12 得到小时数。最后,站点字段保持不变。

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

这会将数组 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 ) )