繁体   English   中英

增加 apl 中的数字

[英]Increase the numbers in apl

我有以下数据:

a b c d
5 9 6 0
3 1 3 2

第一行是字符,第二行是数字。

如何获取第二行最高数字对应的字符,以及如何增加第二行对应的数字? (例如,此处b列的数字最大,为9 ,因此将该数字增加 10%。)

我使用 Dyalog 版本 17.1。

和:

      ⎕←data←3 4⍴'a' 'b' 'c' 'd' 5 9 6 0 3 1 3 2
a b c d
5 9 6 0
3 1 3 2

您可以使用以下命令提取第二行:

      2⌷data
5 9 6 0

现在对它进行降序分级,即找到将它从高到低排序的索引:

      ⍒2⌷data
2 3 1 4

第一个数字是我们要查找的列:

      ⊃⍒2⌷data
2

现在我们可以使用它从第一行中提取字符:

      data[⊂1,⊃⍒2⌷data]
b

但是我们只需要列索引,而不是实际的字符。 我们要增加的数字的完整索引是:

     2,⊃⍒2⌷data
2 2

提取数据以查看我们得到了正确的索引:

      data[⊂2,⊃⍒2⌷data]
9

现在我们可以创建一个目标值增加 10% 的新数组:

      1.1×@(⊂2,⊃⍒2⌷data)⊢data
a   b c d
5 9.9 6 0
3 1   3 2

或者就地更改它:

      data[⊂2,⊃⍒2⌷data]×←1.1
      data
a   b c d
5 9.9 6 0
3 1   3 2

在线试试吧!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM