代码之家  ›  专栏  ›  技术社区  ›  Yaroslav Bulatov

在自定义轴上求和

  •  0
  • Yaroslav Bulatov  · 技术社区  · 14 年前

    从一开始 Array arr 和A List 轴的 lst 长度的 k ,求和中指定轴的值的好方法是什么? 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 尺寸 {}

    2 回复  |  直到 14 年前
        1
  •  1
  •   Michael Pilat    14 年前

    Fold[Total[#, {#2}]&, arr, lst] 做你想做的?

    更新

    这个怎么样?

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

    (还有给@belisarius=的帽子提示)

        2
  •  0
  •   Mark    14 年前

    这是你想要的吗?

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