从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阵列。