当前位置: 首页 > 面试题库 >

如何使用NumPy获取累积分布函数?

东郭弘
2023-03-14
问题内容

我想用NumPy创建CDF,下面是我的代码:

histo = np.zeros(4096, dtype = np.int32)
for x in range(0, width):
   for y in range(0, height):
      histo[data[x][y]] += 1
      q = 0 
   cdf = list()
   for i in histo:
      q = q + i
      cdf.append(q)

我正在阵列旁走,但是需要很长时间执行程序。这个功能有一个内置的功能,不是吗?


问题答案:

我不太确定您的代码在做什么,但是如果您有histbin_edges返回的数组,则numpy.histogram可以numpy.cumsum用来生成直方图内容的累积和。

>>> import numpy as np
>>> hist, bin_edges = np.histogram(np.random.randint(0,10,100), normed=True)
>>> bin_edges
array([ 0. ,  0.9,  1.8,  2.7,  3.6,  4.5,  5.4,  6.3,  7.2,  8.1,  9. ])
>>> hist
array([ 0.14444444,  0.11111111,  0.11111111,  0.1       ,  0.1       ,
        0.14444444,  0.14444444,  0.08888889,  0.03333333,  0.13333333])
>>> np.cumsum(hist)
array([ 0.14444444,  0.25555556,  0.36666667,  0.46666667,  0.56666667,
        0.71111111,  0.85555556,  0.94444444,  0.97777778,  1.11111111])


 类似资料:
  • 我有两个不同长度的向量,每个向量包含0到50之间的数字。有些数字在向量中不包含,其他数字可能出现多次。 我想画一条线,显示每个数字在每个向量中包含的频率,即数字的频率。 如果我将中断设置为每个可能的数字之间,我可以绘制显示频率的直方图: 我知道有一个经验累积分布函数(),它会形成一个S形;但我想要的是一个非累积的经验分布函数,它将导致类似阶梯形钟形曲线的结果,类似于直方图的轮廓。 我能得到的最接近

  • 我正在使用窗口函数实现火花中的累积总和。但是在应用窗口分区函数时记录输入的顺序没有保持 输入数据: 预期产出: 我试过下面的逻辑 对于dept_no=10,记录是按预期顺序计算的,而对于dept_no=30,记录不是按输入顺序计算的。

  • 问题内容: 在numpy或scipy(或其他库)中是否有一个函数将cumsum和cumprod的概念推广为任意函数。例如,考虑(理论上的)函数 func是一个接受两个浮点数并返回一个浮点数的函数。特殊情况 和 分别是cumsum和cumprod。例如,如果 我将其应用于: 我想要 问题答案: NumPy的ufunc有: 不幸的是,呼吁在“编Python函数失败,一个奇怪的错误: 这是将NumPy

  • 问题内容: 如何计算Python中正态分布的累积分布函数(CDF)的反函数? 我应该使用哪个库?可能是卑鄙的? 问题答案: NORMSINV(在注释中提到)是标准正态分布的CDF的倒数。使用,您可以使用对象的方法进行计算。首字母缩写词代表 百分比点函数 ,它是 分位数函数的 另一个名称。 检查它是否与CDF相反: 默认情况下,使用mean = 0和stddev = 1,这是“标准”正态分布。您可以

  • 假设我有几个case类和函数来测试它们: 现在我定义了一个新的case类< code>Person和一个测试函数,它很快就会失败。 现在,我希望函数累积错误,而不是快速失败。 我希望 始终执行所有这些 函数并返回 。我该怎么做?

  • 常见配置 自动保存: "files.autoSave": "onFocusChange" 参考链接:https://blog.csdn.net/WestLonly/article/details/78048049 在新的窗口中打开文件: "workbench.editor.enablePreview": false, 常见操作 如何查看代码结构 方法一:「Cmd + Shift + O」 方法二