我有一个numpy数组。我想重新缩放数组中的元素,以便数组中的最小数字由1表示,数组中的最大数字由数组中唯一元素的数量表示。
例如
n
会变成
A=[ [2,8,8],[3,4,5] ]
答案 0 :(得分:3)
使用np.unique
及其return_inverse
参数 -
np.unique(A, return_inverse=1)[1].reshape(A.shape)+1
示例运行 -
In [10]: A
Out[10]:
array([[2, 8, 8],
[3, 4, 5]])
In [11]: np.unique(A, return_inverse=1)[1].reshape(A.shape)+1
Out[11]:
array([[1, 5, 5],
[2, 3, 4]])
答案 1 :(得分:1)
如果您不反对使用array_intersect_key($items, $array);
// array( 0 => 'bananas' );
,则可以使用here和scipy
(根据您的问题标记判断):
method='dense'
请注意,在您的情况下,from scipy.stats import rankdata
rankdata(A, 'dense').reshape(A.shape)
array([[1, 5, 5],
[2, 3, 4]])
会获得相同的结果,请参阅链接文档以获取更多详细信息