对自定义轴求和

发布于 2024-10-03 00:33:27 字数 512 浏览 2 评论 0原文

Array arr 和长度为 k 的轴 lstList 开始,对 lst 中指定的轴上的值求和的好方法是什么?当 lst={1,2,...,m} 时,这与 Nest[Total,arr,m] 相同

示例:

arr = Array[a, {2, 3, 4}];

然后 f [arr,{1}] 的尺寸为 {3,4}f[arr,{2}] 的尺寸为 {2 ,4}, f[arr,{2,3}] 将具有维度 {2}, f[arr,{1,2 ,3}] 将具有头部 Plus 和尺寸 {}

Starting with an Array arr, and a List of axes lst of length k, what's a good way to sum out values over axes specified in lst? When lst={1,2,...,m}, this would be the same as Nest[Total,arr,m]

Example:

arr = Array[a, {2, 3, 4}];

Then f[arr,{1}] would have dimensions {3,4}, f[arr,{2}] will have dimensions {2,4}, f[arr,{2,3}] will have dimensions {2}, f[arr,{1,2,3}] will have head Plus and dimensions {}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

电影里的梦 2024-10-10 00:33:27

Fold[Total[#, {#2}]&, arr, lst] 是否符合您的要求?

更新

这个怎么样?

f[arr_, lst_] :=
  Fold[Total[#, {#2}] &, arr, Sort[lst, Greater]]

(并向 @belisarius 致敬=))

Does Fold[Total[#, {#2}]&, arr, lst] do what you want?

UPDATE

How about this?

f[arr_, lst_] :=
  Fold[Total[#, {#2}] &, arr, Sort[lst, Greater]]

(and a tip o' the hat to @belisarius =) )

遥远的她 2024-10-10 00:33:27

这是你想要的吗?

f[arr_, coords_] :=
 With[{perm = 
    Ordering[
     Join[coords, Complement[Range[TensorRank[arr]], coords]]]},
  Total[Transpose[arr, perm], Length[coords]]
  ]

Does this do what you want?

f[arr_, coords_] :=
 With[{perm = 
    Ordering[
     Join[coords, Complement[Range[TensorRank[arr]], coords]]]},
  Total[Transpose[arr, perm], Length[coords]]
  ]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文