unique()
MATLABの関数と同等の結果を提供するMathematica関数はありますか?この関数を使用しUnion[]
てリストの一意の要素を取得できることはわかっていますが、入力配列と一意の値の配列の間でマップするインデックス配列を提供する関数の3つの結果バージョンと同等のものが必要です。
何も組み込まれていない場合、その関数の実装はどこかで利用できますか?ここの誰かがそれを構築する方法を知っていますか?
unique()
MATLABの関数と同等の結果を提供するMathematica関数はありますか?この関数を使用しUnion[]
てリストの一意の要素を取得できることはわかっていますが、入力配列と一意の値の配列の間でマップするインデックス配列を提供する関数の3つの結果バージョンと同等のものが必要です。
何も組み込まれていない場合、その関数の実装はどこかで利用できますか?ここの誰かがそれを構築する方法を知っていますか?
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}}}
一意の要素のリストと、それらが元のリストに表示される場所のインデックスを取得します。Matlabの機能を正確に複製するにはUnique()
、特に
[b,m,n] = unique(A)
あなたが必要
b = Union[A];
m = Last[Position[A, #]] & /@ b // Flatten;
n = Position[b, #] & /@ A // Flatten;
これで、目的の動作が提供されます
In[1] := A[[#]] & /@ m == b
Out[1]:= True
In[2] := b[[#]] & /@ n == A
Out[2]:= True
試してみてくださいLength[Union[x]]
。If x=[1,0,1,1,1]
、それからあなたは得るでしょうLength[Union[x]] = 2
。
簡単な方法があります:
a={1,2,3,4,5,5,5,4,3,2}
{1,2,3,4,5,5,5,4,3,2}
uniques = DeleteDuplicates[a]
{1,2,3,4,5}