Python中的振幅谱
我有一个给定的数组,长度超过1'000'000,值在0到255之间,包含为整数。现在,我想在x轴上绘制0到255之间的整数,在y轴上绘制当前代码中给定数组Arr中相应x值的数量 我想到了这个代码:Python中的振幅谱,python,Python,我有一个给定的数组,长度超过1'000'000,值在0到255之间,包含为整数。现在,我想在x轴上绘制0到255之间的整数,在y轴上绘制当前代码中给定数组Arr中相应x值的数量 我想到了这个代码: list = [] for i in range(0, 256): icounter = 0 for x in range(len(Arr)): if Arr[x] == i: icounter +
list = []
for i in range(0, 256):
icounter = 0
for x in range(len(Arr)):
if Arr[x] == i:
icounter += 1
list.append(icounter)
但是有没有什么方法可以让我做得快一点呢?我现在需要几分钟的时间?我考虑过导入…,但找不到合适的包。使用numpy.bincount完成此任务查看更多详细信息
虽然我完全同意前面的答案,您应该使用标准的直方图算法,但是很容易大大加快您自己的实现。它的问题是你一遍又一遍地通过每个箱子的整个输入。只处理一次输入,然后只写入相关的bin会快得多:
def hist(arr):
nbins = 256
result = [0] * nbins # or np.zeroes(nbins)
for y in arr:
if y>=0 and y<nbins:
result[y] += 1
return result
你基本上只是想做一个柱状图,所以或将是非常有效的,并完成这一点task@CoryKramer谢谢。这个问题已经在这里得到了回答@Anil\M哦,我还没有找到这个。。。
def hist(arr):
nbins = 256
result = [0] * nbins # or np.zeroes(nbins)
for y in arr:
if y>=0 and y<nbins:
result[y] += 1
return result