Wolfram mathematica 相等的价值=相等的等级

Wolfram mathematica 相等的价值=相等的等级,wolfram-mathematica,Wolfram Mathematica,我希望对列表中的元素进行排序,以便具有相同值的元素也获得相同的排序: list = {1, 2, 3, 4, 4, 5} 期望输出: ranks = {5, 4, 3, 2, 2, 1} Ordering[]几乎实现了我想要的功能,但为列表中4的两个实例分配了不同的等级。我不确定我是否涵盖了您想到的所有内容,但下面的代码将给出所需的输出。它假定最小的值是最高的秩,并且应该与数值一起工作,或者只要您对Mathematica的标准排序顺序没有异议。局部变量dv是“不同值”的简称 我不确定我是否涵

我希望对列表中的元素进行排序,以便具有相同值的元素也获得相同的排序:

list = {1, 2, 3, 4, 4, 5}
期望输出:

ranks = {5, 4, 3, 2, 2, 1}

Ordering[]
几乎实现了我想要的功能,但为列表中
4
的两个实例分配了不同的等级。

我不确定我是否涵盖了您想到的所有内容,但下面的代码将给出所需的输出。它假定最小的值是最高的秩,并且应该与数值一起工作,或者只要您对Mathematica的标准排序顺序没有异议。局部变量dv是“不同值”的简称


我不确定我是否涵盖了您想到的所有内容,但下面的代码将给出所需的输出。它假定最小的值是最高的秩,并且应该与数值一起工作,或者只要您对Mathematica的标准排序顺序没有异议。局部变量dv是“不同值”的简称

  FromListToRanks[k_List]:= Module[ {dv=Reverse[Union[k]]},
    k /. Thread[dv -> Range[Length[dv]]] ]


  FromListToRanks[list]

  {5,4,3,2,2,1}