2017-02-24 34 views
1

我有一個5D陣列稱爲預測與[6,288,37,90,107]一個形狀,其中6是變量的個數,
288是時間序列的那些變量,
37是k地點,
90是j地點,
107是i地點。
我想要一個pandas dataframe,其中包含每個k,j,i位置上的每個可變時間序列的列,因此當然會有很多列。
然後我想以某種方式獲取每列的名稱。
例如,第一列是var1_k_j_i = predictors[0,:,0,0,0]
除了在這個名字其實我是想了k locationj location
i location而不是k_j_i
既然有這麼多我不能手工做這個,所以我希望有一個建議,以最好的方式將它組織成一個熊貓數據框,並獲得名稱?一個循環可能?最有效的方法把一個5D陣列成熊貓數據幀

因此總之,在這個結尾,我希望我的預測變量的5D陣列變成一個大熊貓數據框,其中每列是位於不同k,j,i位置的變量,變量和位置的對應名稱在數據幀的標題或第一行中。

回答

1

聽起來像你需要在這裏重新塑造樂趣。

要解決位置i,j,k很容易就像使用重塑一樣。然後,我不確定是否可以再次重塑以獲得所需的2D表示形式,因此我將爲您提供一個循環,如下所示。

import itertools 
import pandas as pd 

dfs = [] 
new_matrix = matrix.reshape([6,288,37*90*107]) 
for var range(6): 
    iterator = itertools.product(range(37), range(90), range(107)) 
    columns = ['var%i_' % var + '_'.join(map(str, x)) for x in iterator] 
    dfs.append(pd.DataFrame(new_matrix[var])) 

result = pd.concat(dfs) 
+0

你是什麼意思的'功能'在上面的代碼? – HM14

+2

嘿,我猜你明白了。我將所有的「特徵」變量重命名爲「var」,但只是一個滑過!我剛剛修改了它。 –