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

如何创建填充多个8x8 np.zeros数组的np.array且适配Numba njit

解决方案

你需要的result本质是形状为(N, 8, 8)的三维numpy数组,其中N为你要的8x8子数组的数量,可灵活调整,该结构完全适配numba njit的类型要求,初始化和后续修改的实现方式如下:

初始化代码

import numpy as np
from numba import njit

@njit
def init_result(N: int):
    # 直接指定形状为(N, 8, 8),dtype固定为float32,完全符合numba类型推断规则
    result = np.zeros((N, 8, 8), dtype=np.float32)
    return result

后续修改元素示例

你可以直接通过三层索引访问对应子数组的元素,双层循环遍历单个子数组的写法参考:

@njit
def modify_result(result):
    N = result.shape[0]
    # 遍历每个8x8子数组
    for k in range(N):
        # 双层循环遍历当前子数组的所有元素
        for i in range(8):
            for j in range(8):
                # 此处替换为你自己的修改逻辑,示例为赋值为k+i+j
                result[k, i, j] = k + i + j
    return result

注意不要采用创建单个t_list再多次拼接生成result的写法,一是拼接操作在numba njit环境下的开销远高于直接初始化三维数组,二是如果操作不当容易出现多个子数组共享同一块内存的问题,修改一个就会影响所有子数组,直接初始化三维数组可以完全规避这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:24:02