Numpy二维数组中的np.digitize方法
在本文中,我们将介绍Numpy中的np.digitize方法在二维数组中的应用。
阅读更多:Numpy 教程
什么是np.digitize
np.digitize是Numpy提供的用于数字离散化处理的函数。给定一个数字序列,np.digitize会在一组bin(箱子)中找到每个数字所属的箱子。具体来说,np.digitize函数返回一个表示数字所属箱子的整数数组,其大小与输入数组相同。
np.digitize方法的用法:
digitize(x, bins, right=False)
x:输入数字序列
bins:指定的箱子序列
right:指定是否包含右侧的边界值-True表示包含右侧边界值,False表示不包含
np.digitize的返回值是一个数组,表示输入数组在每个箱子中的索引。索引编号从1开始,最大值为bin序列的长度。
如何使用np.digitize进行离散化处理
下面我们演示如何使用np.digitize方法,对二维数组进行数字的离散化处理。在这个例子中,我们将使用np.random.rand函数生成一个10行10列的随机矩阵,然后带入np.digitize进行离散化处理:
import numpy as np
np.random.seed(10)
arr = np.random.rand(10,10) # 生成二维随机矩阵
bins = np.array([0.0, 0.2, 0.4, 0.6, 0.8, 1.0])
digitized_arr = np.digitize(arr, bins) # 对随机矩阵进行离散化处理
在这个例子中,bins为一个固定的序列,我们将数字离散为5个桶。离散化处理后,可以将数字0到1重新分配到5个桶中。digitized_arr数组中的每个元素将表示相应的数字被分配到的桶的编号。
下面我们展示一下digitized_arr的结果。
print(arr)
print(digitized_arr)
输出结果为:
[[0.77132064 0.02075195 0.63364823 0.74880388 0.49850701 0.22479665
0.19806286 0.76053071 0.16911084 0.08833981]
[0.68535982 0.95339335 0.00394827 0.51219226 0.81262096 0.61252607
0.72175532 0.29187607 0.91777412 0.71457578]
[0.54254437 0.14217005 0.37334076 0.67413362 0.44183317 0.43401399
0.61776698 0.51313824 0.65039718 0.60103895]
[0.8052232 0.52164715 0.90864888 0.31923609 0.09045935 0.30070006
0.11398436 0.82868133 0.04689632 0.62628715]
[0.54758616 0.819287 0.19894754 0.8568503 0.35165264 0.75464769
0.29596171 0.88393648 0.32551105 0.1650159 ]
[0.39252929 0.09346037 0.82110566 0.24928243 0.51484967 0.66252228
0.31171108 0.52006802 0.54671028 0.18485446]
[0.96958463 0.77513282 0.93939311 0.89482735 0.59789998 0.92187424
0.0884925 0.19598286 0.04522729 0.32533033]
[0.38867729 0.27134903 0.82873751 0.35675333 0.28093451 0.54269608
0.14092422 0.80219698 0.07455064 0.98688694]
[0.77224477 0.19871568 0.00552212 0.81546143 0.70685734 0.72900717
0.77127035 0.07404465 0.35846573 0.11586906]
[0.86310343 0.62329813 0.33089802 0.06355835 0.31098232 0.32518332
0.72960618 0.63755747 0.88721274 0.47221493]]
[[ 4 1 4 4 3 2 2 4 2 1]
[ 4 5 1 3 5 4 4 2 5 4]
[ 3 1 2 4 3 3 4 3 4 4]
[ 4 3 5 2 1 3 1 5 1 4]
[ 3 5 2 5 2 5 2 5 2 1]
[ 2 1 5 2 3 4 3 3 3 2]
[ 5 4 5 5 4 5 1 2 1 1]
[ 3 3 5 3 3 4 1 4 1 5]
[ 4 2 1 5 5 5 4 1 3 1]
[ 5 4 3 1 3 3 5 4 5 2]]
从输出结果中我们可以看出,将随机矩阵进行离散化处理后,每个数都对应了一个离散化后的类别编号。
总结
在本文中,我们学习了Numpy中的np.digitize方法。我们展示了如何使用np.digitize方法,对二维数组进行数字的离散化处理。np.digitize方法是python数据分析的重要工具,适用于各种数据分析场景。
极客教程