numpy Python:如何快速vstack一个数组中的所有数组?

ifsvaxew  于 11个月前  发布在  Python
关注(0)|答案(4)|浏览(148)

如何快速将一列中的所有数组vstack成一个大数组?
举例来说:
第一个月
如何将“Binary_feature”列中的所有数组堆叠到一个数组中,如:

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

字符串

wlsrxk51

wlsrxk511#

你可以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

6tqwzwtp

6tqwzwtp2#

数据来自jpp,vstack

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

字符串

ebdffaop

ebdffaop3#

请参阅pd.concat函数。例如,如果您的数据分散在多个Excel工作表中:

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)

字符串

bq3bfh9z

bq3bfh9z4#

你可以用np.concatenate

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

字符串

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

相关问题