You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中存储每次迭代生成的numpy.ndarrays并按z_value调取

实现按z_value查询数组的简单方案

用Python自带的字典就能搞定,不用复杂操作。你可以把字典理解成贴了标签的收纳盒,z_value就是标签,把对应数组放到对应标签的盒子里,要调取的时候直接找对应标签就行,完全符合你的调用需求。

具体实现步骤

  1. 循环前先初始化存储用的空字典
    这里我们直接初始化三个字典,分别对应你要存的x_c、y_c、z_c三个数组,调用的时候和你想要的形式几乎一致:
import numpy as np
# 三个字典的键都是z_value,值是对应迭代生成的numpy数组
x_c = {}
y_c = {}
z_c = {}
  1. 修改你的循环代码,把数组存入对应位置
    只需要改最后三行赋值的代码即可,原有计算逻辑完全不变:
for z_value in np.arange(0, 5, 1):
    ms.set_current_mesh(0) 
    planeoffset : float = z_value 
    ms.compute_planar_section(planeaxis = 'Z Axis', planeoffset = planeoffset)
    m = ms.current_mesh()
    matrix_name = m.vertex_matrix()
    # 把当前z_value作为键,存入对应数组
    x_c[z_value] = matrix_name[:,0]
    y_c[z_value] = matrix_name[:,1]
    z_c[z_value] = matrix_name[:,2]
  1. 调取方法
    你要获取z_value=2的x_c数组,直接写x_c[2]即可,和你期望的x_c @ z_value = 2逻辑完全一致,只是Python的索引语法用方括号[]而已:
# 示例:调取z_value=2对应的三个数组
target_x = x_c[2]
target_y = y_c[2]
target_z = z_c[2]

可选优化:用单个字典存储所有数据

如果你觉得三个字典太零散,也可以用一个字典存对应z_value的所有三个数组,调取更方便:

# 初始化单个存储字典
mesh_section_data = {}

# 循环内存储逻辑
for z_value in np.arange(0, 5, 1):
    # 原有计算逻辑不变
    ms.set_current_mesh(0) 
    planeoffset : float = z_value 
    ms.compute_planar_section(planeaxis = 'Z Axis', planeoffset = planeoffset)
    m = ms.current_mesh()
    matrix_name = m.vertex_matrix()
    # 把三个数组打包存入对应z_value的位置
    mesh_section_data[z_value] = (matrix_name[:,0], matrix_name[:,1], matrix_name[:,2])

# 调取的时候直接一次性解包三个数组
x_2, y_2, z_2 = mesh_section_data[2]

新手实用小提示

  • 忘记自己存了哪些z_value的时候,运行print(x_c.keys())就能输出所有已存储的z值
  • 哪怕你的z_value是小数(比如0.5、1.2这类)也可以直接当键用,调取的时候写对应小数即可,比如x_c[0.5]

内容的提问来源于stack exchange,提问作者niallmitchell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:36:05