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

如何在Pine Script中创建可扩展的3D矩阵?

3D矩阵存储网格数据的可扩展实现方案

核心思路

用三维数组/张量统一存储「时间维度+网格二维维度」的数据,替代多个独立矩阵,从根本上简化调用逻辑,同时天然支持动态扩展。以下是几种主流编程语言的落地实现:

Python 实现(NumPy/深度学习框架)

NumPy 固定+动态扩展方案

import numpy as np

# 定义基础参数:时间步总数T、网格高度H、网格宽度W
T = 100
H = 50
W = 50

# 初始化固定大小的3D矩阵,可根据数据类型调整dtype
grid_time_data = np.zeros((T, H, W), dtype=np.float32)

# 存储单步网格数据(假设grid_t是当前时间步的2D网格矩阵)
t = 5
grid_t = np.random.rand(H, W)
grid_time_data[t] = grid_t

# 读取单步数据
loaded_grid = grid_time_data[t]

# 动态扩展时间维度:追加新时间步
new_grid = np.random.rand(H, W)
grid_time_data = np.vstack([grid_time_data, new_grid[np.newaxis, ...]])

PyTorch/TensorFlow 动态拼接方案

import torch

# 用列表临时存储每一步数据,灵活度更高
grid_time_list = []

# 模拟时间步循环生成数据
for t in range(100):
    grid_t = torch.rand(50, 50)
    grid_time_list.append(grid_t)

# 转换为3D张量(形状:[时间步, 网格高, 网格宽])
grid_time_tensor = torch.stack(grid_time_list)

# 扩展时间维度:直接追加后重新拼接
new_grid = torch.rand(50, 50)
grid_time_list.append(new_grid)
grid_time_tensor = torch.stack(grid_time_list)

C++ 实现(Eigen库)

#include <Eigen/Dense>
#include <vector>

int main() {
    int time_steps = 100;
    int grid_h = 50;
    int grid_w = 50;

    // 用vector封装2D矩阵,实现动态3D结构
    std::vector<Eigen::MatrixXd> grid_time_data;
    grid_time_data.reserve(time_steps); // 预分配空间提升效率

    // 存储单步数据
    Eigen::MatrixXd current_grid(grid_h, grid_w);
    current_grid.setRandom();
    grid_time_data.push_back(current_grid);

    // 读取单步数据
    Eigen::MatrixXd loaded_grid = grid_time_data[5];

    // 动态扩展时间维度
    Eigen::MatrixXd new_grid(grid_h, grid_w);
    new_grid.setRandom();
    grid_time_data.push_back(new_grid);

    return 0;
}

方案优势

  • 统一索引:通过[时间步, 行, 列]直接定位数据,无需维护多个独立矩阵的命名规则
  • 低扩展成本:不管是预分配固定空间还是动态追加,操作逻辑远少于管理多矩阵
  • 批量操作友好:可直接对整个3D矩阵做时间维度的运算(比如求时间序列均值、帧间差分)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:00:58