【问题标题】:How to find the average of each row in a matrix in APL? and the highest average?如何在 APL 中找到矩阵中每一行的平均值?和最高的平均值?
【发布时间】:2020-08-02 09:32:29
【问题描述】:

我试图找出矩阵中每一行的平均值。

我有两个矩阵。
一个矩阵 NAMES 包含一个平面名称列表(有 3 个名称)。
另一个矩阵GRADES 包含数字。
GRADES 中的每一行对应NAMES 中的一个名称。

我想写一个函数来输出:

Name AverageOfNumbersInRow
Name AverageOfNumbersInRow
Name AverageOfNumbersInRow

我还想写一个函数,输出平均值最高的名称:

Name

例如,对于:

GRADES←3 4 ⍴ 98 34.5 78.9 34.7 22.3 33.9 23.8 24.11 100 89.3 92.6 87.9
NAMES←3 4 ⍴ 'JaneBob Mark'

我愿意

Mark      

我正在使用 NARS2000。

【问题讨论】:

  • @KenWhite 不,APL 代码倾向于避免循环,而是一次性处理所有数组。这是一个明智的问题,因为经典的 APL 平均值公式计算 列平均值
  • @Adám 列平均值的经典 APL 公式是什么?
  • 仍然假设 Dyalog APL(请说明!):+⌿÷≢
  • 您的输出规格不明确。对于表格,你想要一个嵌套的结果,一个异构的平面矩阵,还是一个同质的字符矩阵?对于最高平均,如果出现平局,您想要第一个、任何一个还是所有平均最高的名字?

标签: matrix apl


【解决方案1】:

因为问题被标记为APL,所以在 Dyalog APL 中回答:

rank 运算符非常适合此类操作。代码块(+/÷≢)⍤1 将采用 averagesum 除以 length(+/÷≢))并将其应用于行(排名数字 1) 在矩阵中。示例:

      names←'tom' 'dick' 'harry'
      numbers←3 3⍴?⍨9
      numbers
9 5 8
6 1 2
4 3 7
      names,⍪(+/÷≢)⍤1⊢numbers
 tom    7.333333333
 dick   3          
 harry  4.666666667

因附加信息而编辑

在 NARS2000 中,要找到具有所述格式数据的平均值最高的名称,您可以使用{⍺⌷⍨(⊢⍳⌈/)(+/÷≢)⍤1⊢⍵}

      GRADES←3 4 ⍴ 98 34.5 78.9 34.7 22.3 33.9 23.8 24.11 100 89.3 92.6 87.9
      NAMES←3 4 ⍴ 'JaneBob Mark'
      f←{⍺⌷⍨(⊢⍳⌈/)(+/÷≢)⍤1⊢⍵}
      NAMES f GRADES
Mark

【讨论】:

  • 谢谢!作为后续问题,您将如何仅返回平均值最高的名称? (在你的情况下:汤姆)
  • @judah 将其添加到您的原始问题或单独发布一个问题。请注意,查找平均值最高的名称的代码与此代码不太相似。
  • 您可能需要根据名称矩阵的结果来修改此答案。
【解决方案2】:

在 NARS2000 中回答。

“b”是一列 6 个名字,“a”是一个 6 行 5 票的矩阵,“c”是“a”每一行的平均值

  b←⍪"one" "two" "treqq" "qu" "cin" "six" 
  a←6 5⍴↑,/{⍵?10}¨30⍴1
  a
10 8 3 2 6
 3 9 9 1 7
 4 4 9 1 9
 2 1 8 1 8
 5 1 7 2 6
 3 9 4 4 9
  c←(2⌷⍴a)÷⍨+/a
  c
5.8 5.8 5.4 4 4.2 5.8 
  b,c
 one   5.8 
 two   5.8 
 treqq 5.4 
 qu    4   
 cin   4.2 
 six   5.8 
  ⎕fmt  ,b[(+/c[↑⍒c]=c)↑⍒c;]
┌3───────────────────┐
│┌3───┐ ┌3───┐ ┌3───┐│
││ one│ │ two│ │ six││
│└────┘ └────┘ └────┘2
└∊───────────────────┘

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 2021-07-24
    • 2014-05-16
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多