Bre*_*dan 3 python arrays numpy multidimensional-array
对不起,如果问题措辞混乱.我有一个类似于以下的数组:
[[3,7,9,5],[3,3,7,5]]
虽然更大.
如何将其转换为一种形式,例如[[0,2,3,1],[0,0,2,1]]
从最低的每个唯一值给出一个标识号,从0开始?目前我正在使用for循环,但它非常慢.numpy中是否有任何可以加快速度的功能?
我们可以使用一种方法,使用np.unique
其可选的arg return_inverse
set作为True
.这会在输入时使输入变得扁平,从而为我们提供从中开始的唯一ID 0
.数组中的所有元素都保持唯一性,因为它是扁平的.因此,输出需要重新塑造,以使其恢复到与输入相同的形状.
因此,实施将是 -
np.unique(a, return_inverse=True)[1].reshape(a.shape)
Run Code Online (Sandbox Code Playgroud)
样品运行 -
In [208]: a = np.array([[3,7,9,5],[3,3,7,5]])
In [209]: np.unique(a, return_inverse=True)[1].reshape(a.shape)
Out[209]:
array([[0, 2, 3, 1],
[0, 0, 2, 1]])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
87 次 |
最近记录: |