如何快速将一列中的所有数组vstack成一个大数组?举例来说:第一个月如何将“Binary_feature”列中的所有数组堆叠到一个数组中,如:
array([[1,0,0,0,1], [0,1,0,1,0], ... [0,1,0,1,0]])
字符串
wlsrxk511#
你可以squeeze一个数组来删除尺寸为1的维度:
squeeze
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更有效:
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
型
6tqwzwtp2#
数据来自jpp,vstack
vstack
np.vstack(s.values) Out[216]: array([[1, 0, 0, 0, 1], [0, 1, 0, 1, 0], [0, 1, 0, 1, 0]])
ebdffaop3#
请参阅pd.concat函数。例如,如果您的数据分散在多个Excel工作表中:
pd.concat
excel = pd.ExcelFile(filename_xlsb) dfs = [ pd.read_excel( filename_xlsb, engine="pyxlsb", sheet_name=sheet_name ) for sheet_name in excel.sheet_names ] df = pd.concat(dfs)
bq3bfh9z4#
你可以用np.concatenate
np.concatenate
np.concatenate([df['Binary_feature']])
**UPD:**在这种情况下,它应该是np.concatenate(df['Binary_feature'])
np.concatenate(df['Binary_feature'])
4条答案
按热度按时间wlsrxk511#
你可以
squeeze
一个数组来删除尺寸为1的维度:字符串
你会发现这比在你的系列中使用
np.vstack
更有效:型
6tqwzwtp2#
数据来自jpp,
vstack
字符串
ebdffaop3#
请参阅
pd.concat
函数。例如,如果您的数据分散在多个Excel工作表中:字符串
bq3bfh9z4#
你可以用
np.concatenate
字符串
**UPD:**在这种情况下,它应该是
np.concatenate(df['Binary_feature'])