如何使用 numpy.digitize() 在 python 中对变量进行分组
通常,您可能有兴趣将变量的值放入 Python 中的“bins”中。
幸运的是,使用numpy.digitize()函数可以轻松做到这一点,该函数使用以下语法:
numpy.digitize(x, bins, right=False)
金子:
- x:数组到组。
- bins: bins 数组。
- right:指示间隔是否包括 bin 的右边缘或左边缘。默认情况下,该区间不包括右边缘。
本教程展示了此功能实际使用的几个示例。
示例1:将所有值放入两个bin中
下面的代码展示了如何将数组的值放入两个容器中:
- 如果 x < 20,则为0
- 如果 x ≥ 20,则为1
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 19, 20, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[20]) array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1])
示例2:将所有值放入三个bin中
下面的代码展示了如何将数组的值放入三个容器中:
- 如果 x < 10,则为0
- 如果 10 ≤ x < 20,则为1
- 如果 x ≥ 20,则为2
import numpy as np #create data data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2])
请注意,如果我们指定 right= True那么这些值将被放置在以下容器中:
- 如果 x ≤ 10,则为0
- 如果 10 < x ≤ 20,则为1
- 如果 x > 20,则为2
每个间隔将包括箱的右边缘。它看起来是这样的:
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20], right= True ) array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2])
示例3:将所有值放入四个bin中
下面的代码展示了如何将数组的值放入三个容器中:
- 如果 x < 10,则为0
- 如果 10 ≤ x < 20,则为1
- 如果 20 ≤ x < 30,则为2
- 3如果 x ≥ 30
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins n.p. digitize (data, bins=[10, 20, 30]) array([0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3])
示例4:统计每个bin的频率
另一个有用的 NumPy 函数是 numpy.digitize() 函数的补充,它是numpy.bincount()函数,它计算每个 bin 的频率。
下面的代码展示了如何将数组的值分为三组,然后统计每组的频率:
import numpy as np #createdata data = [2, 4, 4, 7, 12, 14, 20, 22, 24, 31, 34] #place values into bins bin_data = np. digitize (data, bins=[10, 20]) #view binned data bin_data array([0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2]) #count frequency of each bin n.p. bincount (bin_data) array([4, 2, 5])
输出告诉我们:
- Bin“0”包含4 个数据值。
- 仓“1”包含2 个数据值。
- 仓“2”包含5 个数据值。
在此处查找更多 Python 教程。