如何使用 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 教程。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注