python - Numpy在for循环中追加二维数组
问题描述
我想垂直附加在 for 循环中创建的二维数组。
我尝试了 append 方法,但这不会垂直堆叠(我不想避免稍后重塑结果),我尝试了 vstack() 函数,但这不适用于空数组。有谁知道如何解决这个问题?
import numpy as np
mat = np.array([])
for i in np.arange(3):
val = np.random.rand(2, 2)
mat = np.append(mat,val)
我可以想到以下解决方案:
for i in np.arange(3):
val = np.random.rand(2, 2)
if i==0:
mat = val
else:
mat = np.vstack((mat,val))
有没有一种解决方案,我只附加值“val”而不指定额外的 if-else 语句?
解决方案
使用 np.empty 初始化一个空数组并定义要附加的轴:
import numpy as np
mat = np.empty((0,2))
for i in np.arange(3):
val = np.random.rand(2, 2)
mat = np.append(mat,val, axis=0)
print(mat)
输出:
[[0.08527627 0.40567273]
[0.39701354 0.72642426]
[0.17540761 0.02579183]
[0.76271521 0.83032347]
[0.08105248 0.67986726]
[0.48079453 0.37454798]]
但是,正如我的评论中所述,如果您需要多次附加,则应考虑初始化正确大小的数组,然后使用 np.append() 分配值或附加到列表中(如果您不知道数组的大小),然后在之后创建一个 numpy 数组
推荐阅读
- c# - 如何在客户端启动 GMAIL Api 身份验证?
- javascript - 在 TypeScript 中简化/重构嵌套的 forEach 循环
- postgresql - 如何在现有表(postgres)的特定位置插入列?
- javascript - Puppeteer 焦点循环通过输入字段
- python - 如何在 Pycharm 中输入提示“返回类型或不返回”
- java - How to When/thenReturn 类的非属性方法
- jupyter-notebook - 如何从命令行更改 jupyter notebook 的内核
- swagger - 如何使用数组为 application/x-www-form-urlencoded 请求定义 Swagger
- python - “返回 x 和 y”是什么意思?
- c++ - 为什么某些字符串变量不从结构中获取输入到 void 函数?