如何将列的所有数组快速堆叠成一个大数组?
例如:
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'])