基于Numpy/Python的高效低内存三角化变换实现问询
带最大行长度限制的序列三角化变换实现需求
原始数据
输入的二维数组如下:
[[1,2,3], [4,5,6], [7,8,9]]
变换规则
需要对该数组进行带最大行长度限制的三角化变换,具体规则如下:
无最大行长度限制的情况
变换后生成的序列从单个元素开始,逐步扩展为包含所有元素的连续子序列:
[[1], [1,2], [1,2,3], [1,2,3,4], [1,2,3,4,5], [1,2,3,4,5,6], ... [1,2,3,4,5,6,7,8,9]]
最大行长度设为4的情况
当限制最大行长度为4时,前几个子序列逐步扩展到长度4,之后每次滑动一个元素生成固定长度4的子序列,最终到包含最后4个元素的子序列:
[[1], [1,2], [1,2,3], [1,2,3,4], [2,3,4,5], [3,4,5,6], ... [6,7,8,9]]
也接受补零对齐到最大行长度的形式:
[[1,0,0,0], [1,2,0,0], [1,2,3,0], [1,2,3,4], [2,3,4,5], [3,4,5,6], ... [6,7,8,9]]
实现需求
此前尝试将全量数据拼接后用三角掩码处理,但出现内存不足问题,因此引入最大行长度限制优化内存占用。现寻求以下实现方案:
- 基于Numpy的高效低内存实现方式
- 其他Python数据处理库的可行方案
- 基于数据库或文件的分批加载处理方式
变换后的数据将用于后续线性层投影及Transformer模型训练。
内容的提问来源于stack exchange,提问作者M46f988b814
相关产品推荐
相关产品推荐

