Python:如何快速虚拟堆栈数据帧中列的所有数组?



如何将列的所有数组快速堆叠成一个大数组?

例如:

Dataframe['Binary_feature'][0] = array([[1,0,0,0,1]]) Dataframe['Binary_feature'][1] = array([[0,1,0,1,0]]) ...... Dataframe['Binary_feature'][i] = array([[0,1,0,1,0]])

如何将"Binary_feature"列中的所有数组堆叠成一个数组,例如:

array([[1,0,0,0,1], [0,1,0,1,0], ... [0,1,0,1,0]])

您可以squeeze数组来删除大小为 1 的维度:

s = pd.Series([np.array([[1,0,0,0,1]]),
np.array([[0,1,0,1,0]]),
np.array([[0,1,0,1,0]])])
res = np.array(s.values.tolist()).squeeze()
array([[1, 0, 0, 0, 1],
[0, 1, 0, 1, 0],
[0, 1, 0, 1, 0]])

您会发现这比在系列中使用np.vstack更有效:

s = pd.concat([s]*10000)
assert (np.array(s.values.tolist()).squeeze() == np.vstack(s)).all()
%timeit np.array(s.values.tolist()).squeeze()  # 25.2 ms per loop
%timeit np.vstack(s)                           # 71.9 ms per loop
%timeit np.vstack(s.values)                    # 66.8 ms per loop

数据来自 jpp,vstack

np.vstack(s.values)
Out[216]: 
array([[1, 0, 0, 0, 1],
[0, 1, 0, 1, 0],
[0, 1, 0, 1, 0]])

我认为你可以使用np.concatenate

np.concatenate([df['Binary_feature']])

上级:在这种情况下,它应该是np.concatenate(df['Binary_feature'])

最新更新