python - 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
?
谢谢!
解决方案
最快的方法是 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
推荐阅读
- angular - Docker 不会在 Windows 中更改 Angular 项目中的任何内容时重新编译
- javascript - 如何在浏览器中本地缓存 XHR?
- vue.js - 如何将 Elastic APM 集成到 Vuejs SPA?
- android - NoBeanDefFoundException 与 Mock ViewModel,使用 Koin、Espresso 进行测试
- db2 - RPGLE:不成功的 READ 是否会解锁先前锁定的记录?
- python - Python:如何用字典中的相应数据替换字符串中的数值
- javascript - D3.js v4 元素在拖动后会回到初始位置
- javascript - Angular 8 应用程序未在 Internet Explorer 中打开
- java - 通过交换染色体进行重组以产生新的基因型
- java - Android Studio - 选择高度的哪个视图元素?