How to recover original indices for a flattened Numpy array?

后端 未结 6 463
逝去的感伤
逝去的感伤 2021-01-02 19:49

I\'ve got a multidimensional numpy array that I\'m trying to stick into a pandas data frame. I\'d like to flatten the array, and create a pandas index that reflects the pre-

6条回答
  •  悲&欢浪女
    2021-01-02 20:30

    from itertools import product
    
    np.random.seed(0)
    A = np.random.rand(2, 3, 4)
    x, y, z = A.shape
    x_, y_, z_ = zip(*product(range(x), range(y), range(z)))
    df = pd.DataFrame(A.flatten()).assign(x=x_, y=y_, z=z_)
    >>> df
    
               0  x  y  z
    0   0.548814  0  0  0
    1   0.715189  0  0  1
    2   0.602763  0  0  2
    3   0.544883  0  0  3
    4   0.423655  0  1  0
    5   0.645894  0  1  1
    6   0.437587  0  1  2
    7   0.891773  0  1  3
    8   0.963663  0  2  0
    9   0.383442  0  2  1
    10  0.791725  0  2  2
    11  0.528895  0  2  3
    12  0.568045  1  0  0
    13  0.925597  1  0  1
    14  0.071036  1  0  2
    15  0.087129  1  0  3
    16  0.020218  1  1  0
    17  0.832620  1  1  1
    18  0.778157  1  1  2
    19  0.870012  1  1  3
    20  0.978618  1  2  0
    21  0.799159  1  2  1
    22  0.461479  1  2  2
    23  0.780529  1  2  3
    

提交回复
热议问题