我有一个形状为 (4, 155, 240, 240) 的 4D numpy 数组。我想创建一个 pandas DataFrame,其中该数组的每个元素一行,五列:一列对应四个索引中的每一个,一列对应数组中的值。我现在使用的代码如下所示:
import pandas as pd
import numpy as np
# some array of this shape
im = np.zeros((4, 155, 240, 240))
df = {col: [] for col in ['mode', 'x', 'y', 'z', 'val']}
for idx, val in np.ndenumerate(im):
df['mode'].append(idx[0])
df['y'].append(idx[1])
df['x'].append(idx[2])
df['z'].append(idx[3])
df['val'].append(val)
df = pd.DataFrame(df)
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以更有效地做到这一点,可能使用矢量化运算?