我是 APL 的新手,我想在向量中找到元素的位置。例如,如果我创建一个包含 50 个随机数的向量:
lst ← 50 ? 100
假设它在向量中出现 3 次,我如何找到 91 的位置?
谢谢。
我是 APL 的新手,我想在向量中找到元素的位置。例如,如果我创建一个包含 50 个随机数的向量:
lst ← 50 ? 100
假设它在向量中出现 3 次,我如何找到 91 的位置?
谢谢。
我不是专家,但一种简单的方法是只选择⍳ 100
相应元素所在的lst
元素91
(lst=91)/⍳100
感谢ngn、Cows_quack 和 Probie。我应该更仔细地阅读 Mastering Dyalog APL,因为它在第 126 页也提到了这一点。所以把所有的答案放在一起:
⍝ Generate a list of 100 non-unique random numbers
lst ← ?100⍴100
⍝ How many times does 1, for example, appear in the vector Using the compress function?
+/ (lst = 1) ⍝ Appears twice
2
⍝ Find the locations of 1 in the vector
(lst = 1) / ⍳ ⍴ lst
2 37 ⍝ Positions 2 and 37
所以分解解决方案;(i) (lst = 1) 生成一个布尔向量,其中 true 出现在 int 值 1 存在的地方;(ii) 通过布尔向量压缩 lst 向量在 lst 中创建一个位置为 'true' 的新向量。
如果我的描述不正确,请纠正我?
简化:
使用 'Where' 函数使其更具可读性(尽管前面的方法显示了如何使用数组编程的 APL 思维方式来解决它):
⍸lst=1
2 37 ⍝ Positions 2 and 37
感谢您抽出宝贵的时间!
问候