通常,我试图计算列表中每个集合中两个元素之间的差的范数,看起来像
X = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}
因此评估
Norm[X[[1]]-X[[2]]]
Norm[X[[1]]-X[[3]]]
Norm[X[[2]]-X[[3]]]
现在,应用Outer []是一种可行的方法
Outer[Norm[X[[#1]] - X[[#2]]] &, {1,2,3}, {1,2,3}]
但是不幸的是,如果我增加X中的元素数量和每个元素的长度,它会导致代码很慢。
有没有可能构造Map []操作的方法?就像是
MapThread[Norm[X[[#1]] - X[[#2]]] &,{{1,2,3},{1,2,3}}]
不起作用给我一直在寻找所需的“咖喱”。我正在使用Mathematica版本11.2.0.0,因此无法访问Curry []。
任何建议都会很高兴!
mX = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}}
Apply[Norm@*Subtract, #] & /@ Subsets[mX, {2}]
两种等效的方法:
(Norm@*Subtract) @@@ Subsets[mX, {2}]
Apply[Norm@*Subtract, Subsets[mX, {2}], {1}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句