我有一个DataFrame,它有两列,第二列包含形状不同的numpy数组(这里是:(2, 1)
、(2, 2)
、(2, 3)
)。示例:
class data
0 0 [[3], [17]]
1 1 [[9, 5], [8, 19]]
2 1 [[8, 16, 13], [17, 19, 10]]
现在我想将data
列扁平化以得到一个1D数组[3, 17, 9, 5, 8, 19, 8, 16, 13, 17, 19, 10]
,对这个向量应用一个函数,并恢复DataFrame的原始形状。例如,如果我想从所有元素中减去向量的平均值,所需的输出如下:
class data
0 0 [[-9], [5]]
1 1 [[-3, -7], [-4, 7]]
2 1 [[-4, 4, 1], [5, 7, -2]]
如何才能最好地实现这种转变?
编辑@mozway:
我生成的DataFrame如下所示:
data = []
np.random.seed(8)
for i in range(1, 4):
data.append(np.random.randint(0, 20, (2, i)))
category = {"class": [0, 1, 1]}
df = pd.DataFrame(category)
df["data"] = data
用于变换前面提到的1D阵列的函数将是arr -= np.mean(arr)
。
1条答案
按热度按时间liwlm1x91#
假设
flat
是一个数组,如下所示:一种办法可以是:
产出
如果您还对
flatten
函数感兴趣:它可用于从示例中获取
flat
,如下所示: