我有数据如下
[[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
[[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方法来计算这个转换,而不会占用我的内存?我也愿意使用其他图书馆。也许使用一个数据库或文件存储,我可以在其中部分加载数据可能会有所帮助。对于上下文,这些数据将进入一个线性层(用于投影),然后是一个转换器,所以也许已经有处理这个问题的方法了,但是,我的google foo不够强大。
谢谢大家!
1条答案
按热度按时间z31licg01#
如果你对左填充没问题,这正是
sliding_window_view
正在做的:由于返回数组的视图,因此这应该是内存有效的。
输出: