gpt4 book ai didi

matrix - 如何在APL语言中找到满足两个条件的矩阵的第一行的索引?

转载 作者:行者123 更新时间:2023-12-03 16:19:18 25 4
gpt4 key购买 nike

还有一个问题来学习如何使用 APL 语言。
假设您有一个数组,例如:


c1
c2
c3
c4
c5
C6


3
123
0
4
5
6

3
134
0
2
3
4

3
231
180
1
2
5

4
121
0
3
2
4

4
124
120
4
6
3

4
222
222
5
3
5


那么,如何找出第 1 列中哪一行的值为 4,第 3 列中的值大于 0?
预期的答案是第 5 行,仅在 5

最佳答案

当您想要进行此类“查询”时,请考虑 bool 掩码。

      table ← 6 6⍴3 123 0 4 5 6 3 134 0 2 3 4 3 231 180 1 2 5 4 121 0 3 2 4 4 124 120 4 6 3 4 222 222 5 
让我们提取第一列:
      table[;1]
3 3 3 4 4 4
并指出哪些元素的值为 4:
      table[;1] = 4
0 0 0 1 1 1
类似地,我们可以指出第 3 列的哪些元素的值大于 0:
      table[;3] > 0
0 0 1 0 1 1
它们的交集(逻辑与)表示满足您的条件的所有行:
      (table[;1] = 4) ∧ (table[;3] > 0)
0 0 0 0 1 1
第一个 1 的索引是满足您的条件的第一行的行号:
      ((table[;1] = 4) ∧ (table[;3] > 0)) ⍳ 1
5
Try it online!
或者,我们可以使用最终掩码来过滤表并获取满足您条件的所有行:
      ((table[;1] = 4) ∧ (table[;3] > 0)) ⌿ table
4 124 120 4 6 3
4 222 222 5 3 5
Try it online!
或者我们可以生成所有行号:
      ⍳ 1 ↑ ⍴ table
1 2 3 4 5 6
然后使用我们的 bool 掩码对其进行过滤,找到满足您条件的所有行的行号:
      ((table[;1] = 4) ∧ (table[;3] > 0)) ⌿ ⍳ 1 ↑ ⍴ table
5 6
Try it online!

关于matrix - 如何在APL语言中找到满足两个条件的矩阵的第一行的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66914802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com