Python中的振幅谱

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 +

我有一个给定的数组,长度超过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 += 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