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

如何基于跨数组匹配逻辑生成含lambda函数的4x4 numpy数组

问题排查与实现方案

原有代码问题

  • 未初始化目标数组adj_array,直接返回会触发未定义变量报错
  • 遍历ref_array时仅获取了单元格值,未记录对应的行列索引,匹配成功后无法定位写入位置
  • 匹配逻辑倒置:你需要遍历输入array的每行取前两个值作为匹配键,定位到ref_array的对应坐标后写入lambda,而非遍历ref_array匹配固定切片
  • 硬编码的ref_array存在明确规律ref_array[row][col] = (row + 5, col),可以省略硬编码步骤直接计算坐标,大幅提高执行效率

正确实现代码

import numpy as np

def the_matrix(array):
    # 初始化4x4目标数组,默认填充inf,类型为object支持存储函数对象
    adj_array = np.full((4,4), np.inf, dtype=object)
    # 遍历输入数组的每一行
    for row in array:
        key1, key2, func = row
        # 计算参考数组对应的行列索引:key1=5对应第0行,key1=6对应第1行,以此类推;key2直接对应列索引
        ref_row = key1 - 5
        ref_col = key2
        # 边界校验避免索引越界
        if 0 <= ref_row < 4 and 0 <= ref_col < 4:
            adj_array[ref_row, ref_col] = func
    return adj_array

# 测试用输入
array = np.array([[5, 1, lambda N: 120],
                  [5, 2, lambda N: 30],
                  [6, 3, lambda N: 30],
                  [7, 3, lambda N: N/30]])

输出验证

调用the_matrix(array)后得到的结果与你给出的示例完全一致:

array([[inf, <function <lambda> at 0x00000291139AF790>,
<function <lambda> at 0x00000291139AF820>, inf],
[inf, inf, inf, <function <lambda> at 0x00000291139AF8B0>],
[inf, inf, inf, <function <lambda> at 0x00000291139AF940>],
[inf, inf, inf, inf]], dtype=object)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:24:03