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

Python中如何将HeatedSolid对象存入numpy数组并存储到字典?

问题分析与解决方案

核心问题点

  • numpy数组类型不兼容:np.zeros((10,10))默认生成数值型数组(如float64),无法存储自定义对象(HeatedSolid实例),必须显式指定对象类型。
  • 字典键类型不匹配:matrix_dict的键是整数10,但判断条件里用的是字符串"10",导致matrix[i,j] in matrix_dict.keys()永远不成立,赋值代码块从未执行。
  • 变量名笔误:代码中rod_params("multi")应为matrix_params["multi"],与前面定义的参数变量对应。

修正后的代码

import numpy as np
import SubKit as sk

# 假设matrix、X_position、Y_position已正确初始化
matrix = np.array([["10", "20"], ["30", "10"]])  # 示例二维数组
X_position = np.zeros((2,2))  # 示例位置数组
Y_position = np.zeros((2,2))

matrix_dict = {
    10: {"multi": "69"},
    20: {"multi": "59"}, 
    30: {"multi": "49"}
}
# 创建支持存储对象的numpy数组
array = np.zeros((10, 10), dtype=object)

# 高效遍历多维数组索引
for i, j in np.ndindex(matrix.shape):
    # 转换类型匹配字典键
    val = int(matrix[i,j])
    if val in matrix_dict:
        matrix_params = matrix_dict[val]
        array[i][j] = sk.HeatedSolid(
            x=X_position[i][j],
            y=Y_position[i][j],
            symtype=1,
            mult=matrix_params["multi"],
            power=1
        )

print(array)

修正说明

  1. 数组创建时添加dtype=object,允许存储任意Python对象;
  2. 将matrix元素转为整数,匹配字典的整数键,确保条件分支能进入;
  3. 修正变量名笔误,正确引用参数字典中的值;
  4. 使用np.ndindex遍历多维数组索引,比嵌套range循环更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:16:23