小编gro*_*aby的帖子

在Mathematica中稀疏阵列上的Outer的有效替代?

假设我有两个非常大的列表{a1,a2,...}和{b1,b2,...},其中所有ai和bj都是大型稀疏数组.为了提高内存效率,我将每个列表存储为一个全面的稀疏数组.

现在我想在所有可能的ai和bj对上计算一些函数f,其中每个结果f [ai,bj]再次是稀疏数组.顺便提一下,所有这些稀疏阵列都具有相同的尺寸.

Flatten[Outer[f, {a1, a2, ...}, {b1, b2, ...}, 1], 1]
Run Code Online (Sandbox Code Playgroud)

返回所需的结果(原则上)它似乎消耗了过多的内存.并非最不重要,因为返回值是稀疏数组的列表,而一个全面的稀疏数组在我感兴趣的情况下效率更高.

是否有上述用途的有效替代方案Outer

更具体的例子:

{SparseArray[{{1, 1, 1, 1} -> 1, {2, 2, 2, 2} -> 1}],
 SparseArray[{{1, 1, 1, 2} -> 1, {2, 2, 2, 1} -> 1}],
 SparseArray[{{1, 1, 2, 1} -> 1, {2, 2, 1, 2} -> 1}],
 SparseArray[{{1, 1, 2, 2} -> -1, {2, 2, 1, 1} -> 1}],
 SparseArray[{{1, 2, 1, 1} -> 1, {2, 1, 2, 2} -> 1}],
 SparseArray[{{1, 2, …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica sparse-array outer-join

8
推荐指数
2
解决办法
762
查看次数