4

我有这段代码

((⍳3)∘.+(⍳2))

生成以下矩阵

2 3 
3 4 
4 5 

我想在结果中找到每个唯一元素的出现,即结果中出现 2、3、4、5。

我尝试将“∘.=”与矩阵本身一起使用,然后重新整形,使每个子矩阵的元素都使用

6 6⍴ ((⍳3)∘.+(⍳2))∘.=((⍳3)∘.+(⍳2))

这给出了以下结果

1 0 0 0 0 0 for 2
0 1 1 0 0 0 for 3
0 1 1 0 0 0 for 3
0 0 0 1 1 0 for 4
0 0 0 1 1 0 for 4
0 0 0 0 0 1 for 5

如您所见,它仍然包含重复项目的总和,而我现在迷路了。任何帮助将不胜感激。

4

2 回答 2

3

您应该∘.=在矩阵中的唯一元素和所有元素的平面向量之间进行操作,例如:

      m ← ((⍳3)∘.+(⍳2))
      (∪,m) ∘.= ,m
1 0 0 0 0 0
0 1 1 0 0 0
0 0 0 1 1 0
0 0 0 0 0 1

然后就+/可以得到频率∪,m

      +/ (∪,m) ∘.= ,m
1 2 2 1
      ∪,m
2 3 4 5

(在 GNU APL 上测试。)

于 2014-08-03T14:17:54.530 回答
0
于 2017-10-31T14:30:31.897 回答