gpt4 book ai didi

arrays - 将 numpy 数组更改为从零开始

转载 作者:行者123 更新时间:2023-12-04 06:41:39 25 4
gpt4 key购买 nike

我正在尝试找出一种方法来获取一个 numpy 整数数组,然后将条目更改为最小的为 0,第二小的为 1,等等。

例如

从这里开始

In [13]: a = numpy.array([[1, 2, 10],[1, 2, 99]])

In [14]: a
Out[14]:
array([[ 1, 2, 10],
[ 1, 2, 99]])

得到这个:

array([[ 0,  1, 2],
[ 0, 1, 3]])

我可以通过 numpy.unique() 开始查看方法,例如

In [19]: range(len(b))
Out[19]: [0, 1, 2, 3]

In [20]: b = numpy.unique(a)

In [21]: b
Out[21]: array([ 1, 2, 10, 99])

In [22]: c = range(len(b))

In [23]: c
Out[23]: [0, 1, 2, 3]

似乎我现在应该能够使用 b 和 c 从一个数组转换到另一个数组。但是最好(和最快)的方法是什么?

最佳答案

不知道最快,但如果你有 scipy 可用,你可以使用 scipy.stats.rankdata :

>>> a = np.array([[1, 2, 10],[1, 2, 99]])
>>> scipy.stats.rankdata(a,'dense').reshape(a.shape)-1
array([[ 0., 1., 2.],
[ 0., 1., 3.]])

(需要 reshape 是因为它首先将数据展平,而 -1 是因为它从 1 开始排名。)

关于arrays - 将 numpy 数组更改为从零开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com