首页 > 解决方案 > Python Numpy追加数组而不展平

问题描述

在 Python 3 中,我在一个循环中导入多个数据文件,并且我希望能够将所有数据存储在一个二维数组中。我从类似的东西开始,data = np.array([])在每次迭代中我想添加一个新数组datai = np.array([1,2,3]),我怎样才能让我的最终数组看起来像这样?[[1,2,3],[1,2,3],...,[1,2,3]]

我已经尝试过 np.append、np.concatenate 和 np.stack,但似乎都不起作用。我正在尝试的示例代码:

data = np.array([])
for i in range(datalen):
    datai = *func to load data as array*
    data = np.append(data, datai)

但这当然会返回一个扁平数组。有什么办法可以取回一个二维长度数组,datalen每个元素都是数组datai

谢谢!

标签: pythonarraysnumpyappendflatten

解决方案


最快的方法是 vstack

data = np.vstack((get_data() for i in range(datalen)))

vstack 需要一个元组/可迭代

data = np.vstack((data1, data2, data3))

或者您可以通过附加 axis=0 来做到这一点

data = np.empty(shape=(0, 3))
data = np.append(data, datai.reshape((-1, 3)), axis=0)  # -1 will make the rows automatic

推荐阅读