cla*_*taq 7 matlab wolfram-mathematica
是否有Mathematica函数提供unique()
与MATLAB中的函数等效的结果?我意识到我可以使用该Union[]
函数来获取列表的唯一元素,但我想要的东西等同于函数的三结果版本,它提供了在输入数组和唯一值数组之间映射的索引数组.
如果没有内置任何内容,是否可以在某处实现该功能?这里有人知道如何构建它吗?
您可以使用Mathematica轻松构建类似的功能Position[]
.例如,如果给出一个数字列表,您可以执行以下操作:
In[1] := A = {1, 5, 2, 3, 7, 3, 2, 8, 6, 5, 9, 2, 1};
In[2] := {#, Flatten[Position[A, #]]} & /@ Union[A]
Out[2]:= {{1, {1, 13}}, {2, {3, 7, 12}}, {3, {4, 6}}, {5, {2, 10}}, {6, {9}}, {7, {5}}, {8, {8}}, {9, {11}}}
Run Code Online (Sandbox Code Playgroud)
获取唯一元素的列表以及它们在原始列表中出现的位置的索引.要完全复制Matlab的功能Unique()
,尤其是
[b,m,n] = unique(A)
Run Code Online (Sandbox Code Playgroud)
你需要
b = Union[A];
m = Last[Position[A, #]] & /@ b // Flatten;
n = Position[b, #] & /@ A // Flatten;
Run Code Online (Sandbox Code Playgroud)
现在提供了所需的行为
In[1] := A[[#]] & /@ m == b
Out[1]:= True
In[2] := b[[#]] & /@ n == A
Out[2]:= True
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2655 次 |
最近记录: |