增加 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
我有以下数据:
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