python-3.x - 如何在for循环中堆叠一系列二维数组,输出到多维数组
问题描述
我有一个函数,我想在一系列传感器高度 (z)上运行(在python 3.7中)。每个生成的二维数组都应该堆叠成一个多维数组,然后我可以稍后访问。我无法合并我的输出,现在每次我运行我的 for 循环时,它都会覆盖之前的运行。
我试过使用 np. stack 和 concatenate 并尝试在堆栈之外使用 np.append ,以及尝试诸如 之类的东西np.stack(AS_temp[k])
,这导致了错误。
AS = np.zeros((len(z),len(x),len(y)))
for k in range(len(z)):
AS_temp = np.sqrt((GradX[k]**2) + (GradY[k]**2) + (GradZ[k]**2))
AS = np.stack(AS_temp,axis = 0)
for 循环应该遍历每个 z 值,计算 AS_temp 函数(这是一个 2D 数组),然后将其垂直添加到我的多维数组 AS。最后,我想要一个 3D 空间,其中每个水平 ' slice
' 代表来自 for 循环的 az 值。
解决方案
有很多方法可以做到这一点。如果你仍然想要 numpy.zeros
AS = np.zeros((len(z),len(x),len(y)))
for k in range(len(z)):
AS[k] = np.sqrt((GradX[k]**2) + (GradY[k]**2) + (GradZ[k]**2))
没有堆叠。如果要使用堆栈,则需要在最后使用它。(根据文档说,“每个数组必须具有相同的形状。”
AS_stack = []
for k in range(len(z)):
AS_stack.append(np.sqrt((GradX[k]**2) + (GradY[k]**2) + (GradZ[k]**2)))
AS = np.stack(AS_stack,axis = 0)
或者,如果 GradX、GradY 和 GradZ 实际上也是数组:
AS = np.sqrt((GradX**2) + (GradY**2) + (GradZ**2))
推荐阅读
- object - getSVGDocument 和 contentDocument 在 chrome 中返回 null
- html - 不能垂直排列 div 内的所有元素(1 个图像 2 个跨度),2 个跨度应该在彼此之上
- asp.net - 在 ASP.NET Core 用户请求中读取 Azure AD 用户属性
- python - Python CLI 应用程序在从 PyPI 安装时不运行,在本地安装时运行良好
- excel - 如何使用 Excel 中另一列的条件计算一列中的单元格值?
- java - 带有条件内容的绑定标签?
- html - 在一定的页面宽度之后,我的两个 DIV 正在离开页面
- java - 使用Java在窗口中水平居中文本
- android - getAssets() 在 MainActivity.class 以外的其他类中无法识别
- linux - 在 CentOS 上为 Linux 内核 4.14 安装实时内核