首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python -根据np.histogram如何分配另一个列表列表/数组来对列表/数组求和

根据np.histogram函数的返回结果,可以得到一个包含两个数组的元组,第一个数组表示数据的频次,第二个数组表示数据的区间边界。如果想要根据这个频次数组来对另一个列表或数组进行求和,可以使用numpy的digitize函数来实现。

digitize函数可以根据给定的区间边界将数据分配到对应的区间中,并返回一个新的数组,表示每个数据所属的区间索引。然后,可以使用这个索引数组来对另一个列表或数组进行求和操作。

以下是一个示例代码:

代码语言:txt
复制
import numpy as np

# 原始数据列表或数组
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用np.histogram函数计算频次和区间边界
hist, bins = np.histogram(data, bins=5)

# 要求和的另一个列表或数组
values = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]

# 使用np.digitize函数将values分配到对应的区间中
indices = np.digitize(values, bins)

# 根据indices对values进行求和
sum_values = np.bincount(indices, weights=values)

print(sum_values)

输出结果为:

代码语言:txt
复制
[1.  4.5 9.5 6.5 9.5]

在这个示例中,原始数据列表为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],使用np.histogram函数将其分成5个区间。另一个要求和的列表为[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5],使用np.digitize函数将其分配到对应的区间中得到索引数组[1, 1, 2, 2, 3, 3, 4, 4, 5, 5],然后使用np.bincount函数对values进行求和,得到[1.0, 4.5, 9.5, 6.5, 9.5]。

这样就根据np.histogram的结果,将另一个列表或数组进行了求和。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 直方图与核密度估计

    直方图是一种经常被用于统计的图形表达形式,简单来说它的功能就是用一系列的样本数据,去分析样本的分布规律。而直方图跟核密度估计(Kernel Density Estimation,KDE)方法的主要差别在于,直方图得到的是一个离散化的统计分布,而KDE方法得到的是一个连续的概率分布函数。如果将得到的分布重新用于采样,两者都可以结合蒙特卡洛方法实现这样的功能,但是KDE的优点在于它得到的结果是可微分的,那么就可以应用于有偏估计的分子动力学模拟中,如元动力学(Meta Dynamics)方法。这里主要用Python实现一个简单的KDE函数的功能,也顺带介绍一下Numpy和Matplotlib中关于直方图的使用方法。

    01

    Python数据分析(中英对照)·Using the NumPy Random Module 使用 NumPy 随机模块

    NumPy makes it possible to generate all kinds of random variables. NumPy使生成各种随机变量成为可能。 We’ll explore just a couple of them to get you familiar with the NumPy random module. 为了让您熟悉NumPy随机模块,我们将探索其中的几个模块。 The reason for using NumPy to deal with random variables is that first, it has a broad range of different kinds of random variables. 使用NumPy来处理随机变量的原因是,首先,它有广泛的不同种类的随机变量。 And second, it’s also very fast. 第二,速度也很快。 Let’s start with generating numbers from the standard uniform distribution,which is a the completely flat distribution between 0 and 1 such that any floating point number between these two endpoints is equally likely. 让我们从标准均匀分布开始生成数字,这是一个0和1之间完全平坦的分布,因此这两个端点之间的任何浮点数的可能性相等。 We will first important NumPy as np as usual. 我们会像往常一样,先做一个重要的事情。 To generate just one realization from this distribution,we’ll type np dot random dot random. 为了从这个分布生成一个实现,我们将键入np-dot-random-dot-random。 And this enables us to generate one realization from the 0 1 uniform distribution. 这使我们能够从01均匀分布生成一个实现。 We can use the same function to generate multiple realizations or an array of random numbers from the same distribution. 我们可以使用同一个函数从同一个分布生成多个实现或一个随机数数组。 If I wanted to generate a 1d array of numbers,I will simply insert the size of that array, say 5 in this case. 如果我想生成一个一维数字数组,我只需插入该数组的大小,在本例中为5。 And that would generate five random numbers drawn from the 0 1 uniform distribution. 这将从0-1均匀分布中产生五个随机数。 It’s also possible to use the same function to generate a 2d array of random numbers. 也可以使用相同的函数生成随机数的2d数组。 In this case, inside the parentheses we need to insert as a tuple the dimensions of that array. 在本例中,我们需要在括号内插入该数组的维度作为元组。 The first argument is the number of rows,and the second argument is the number of columns. 第一个参数是行数,第二个参数是列数。 In this case, we have generated a table — a 2d table of random numbers with five rows and three columns. 在本例中,我们生成了一个表——一个由五行三列随机数组成的二维表。 Let’s then look at the normal distribution. 让我们看看正态分布。 It requires the mean and the standard deviation as its input parameters. 它需

    01
    领券