

タイトルどおりです．  
L次元のベクトルxがi,j,kをパラメータにして生成させるとき，  
列にXベクトルの成分をならべ，インデックスをi,j,kの組み合わせで表示したいです．  
以下のような生成過程のデータをうまく管理したいです．

[code]

    for i range (I)
     for j range (J)
      for k range (K)
        for l range (L)
         x[i,j,k,l] = fanc(i,j,k)
    
[/code]


CC BY-SA 3.0
2017-04-05T09:38:48.897
33791
2019-01-23T01:06:16.330
2017-04-05T09:51:25.930
21291
21291
question
python pandas
pandasで4次元配列を管理したい．


reshapeとMultiIndexで解決できそうです．  
良い表現方法がありましたら，ご教授ください


CC BY-SA 3.0
2017-04-05T10:39:18.007
33793
2017-04-05T10:39:18.007
21291
33791
answer


やりたいことは、こんな感じでしょうか？

[code]

    import pandas as pd
    I,J,K,L = 3,3,3,5
    
    # Indexは range(I),range(J),range(K) の組み合わせ
    idx = pd.MultiIndex.from_product([range(I),range(J),range(K)])
    # Columnは range(L)
    col = range(L)
    # DataFrameの生成
    df = pd.DataFrame(index=idx, columns=col)
    
    # 何かしらの計算式
    def func(i,j,k,l):
        return i+j+k+l # ←とりあえず適当に定義
    
    # 行毎に上記の計算式を適用して各セルを埋める
    df = df.apply(lambda row: [func(*row.name, x) for x in row.index], axis=1)
    
    print(df)
    #       0  1  2  3   4
    #0 0 0  0  1  2  3   4
    #    1  1  2  3  4   5
    #    2  2  3  4  5   6
    #  1 0  1  2  3  4   5
    #    1  2  3  4  5   6
    #    2  3  4  5  6   7
    #  2 0  2  3  4  5   6
    #    1  3  4  5  6   7
    #    2  4  5  6  7   8
    #1 0 0  1  2  3  4   5
    #    1  2  3  4  5   6
    #    2  3  4  5  6   7
    #  1 0  2  3  4  5   6
    #    1  3  4  5  6   7
    #    2  4  5  6  7   8
    #  2 0  3  4  5  6   7
    #    1  4  5  6  7   8
    #    2  5  6  7  8   9
    #2 0 0  2  3  4  5   6
    #    1  3  4  5  6   7
    #    2  4  5  6  7   8
    #  1 0  3  4  5  6   7
    #    1  4  5  6  7   8
    #    2  5  6  7  8   9
    #  2 0  4  5  6  7   8
    #    1  5  6  7  8   9
    #    2  6  7  8  9  10
    
[/code]


CC BY-SA 4.0
2019-01-23T01:06:16.330
52223
2019-01-23T01:06:16.330
24801
33791
answer