gpt4 book ai didi

Python:给定计数(频率)和箱子绘制直方图

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:48 24 4
gpt4 key购买 nike

为了说明我的问题,我准备了一个例子:

首先,我有两个数组“a”和“b”,我对它们的分布很感兴趣:

import numpy as np
import matplotlib.pyplot as plt
a = np.array([1,2,2,2,2,4,8,1,9,5,3,1,2,9])
b = np.array([5,9,9,2,3,9,3,6,8,4,2,7,8,8])
n1,bin1,pat1 = plt.hist(a,np.arange(1,10,2),histtype='step')
n2,bin2,pat2 = plt.hist(b,np.arange(1,10,2), histtype='step')
plt.show()

此代码为我提供了带有两条“曲线”的直方图。现在我想从另一个“曲线”中减去一个“曲线”,我的意思是我分别为每个 bin 执行此操作:

n3 = n2-n1

我不需要负数,所以:

for i in range(0,len(n2)):     
if n3[i]<0:
n3[i]=0
else:
continue

新的直方图曲线应该绘制在与之前的曲线相同的范围内,并且它应该具有相同数量的 bin。所以我有 bins 的数量和它们的位置(这将与其他曲线的位置相同,请引用上面的 block )以及每个 bins 应该具有的频率或计数(n3)。您对我如何使用我拥有的数据执行此操作有任何想法吗?

最佳答案

您可以使用阶跃函数绘制 n3 = n2 - n1。唯一的问题是您需要再提供一个值,否则最后一个值无法很好地显示。您还需要使用 step 函数的 where="post" 选项。

import numpy as np
import matplotlib.pyplot as plt
a = np.array([1,2,2,2,2,4,8,1,9,5,3,1,2,9])
b = np.array([5,9,9,2,3,9,3,6,8,4,2,7,8,8])
n1,bin1,pat1 = plt.hist(a,np.arange(1,10,2),histtype='step')
n2,bin2,pat2 = plt.hist(b,np.arange(1,10,2), histtype='step')

n3=n2-n1
n3[n3<0] = 0

plt.step(np.arange(1,10,2),np.append(n3,[n3[-1]]), where='post', lw=3 )

plt.show()

enter image description here

关于Python:给定计数(频率)和箱子绘制直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44786748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com