繁体   English   中英

Python中的振幅谱

[英]amplitude spectrum in Python

我有一个长度超过1'000'000的给定数组,其值在0255之间(包括)为整数。 现在,我想在x轴上绘制0255的整数,并在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)

但是,有什么办法可以使我更快一点(此刻我花了几分钟时间)吗? 我考虑过import ... ,但是无法为此找到合适的包装。

使用numpy.bincount完成此任务( 在此处查找更多详细信息)

import numpy as np
list = np.bincount(Arr)

尽管我完全同意先前的答案,即您应该使用标准直方图算法,但是极大地加快自己的实现非常容易。 它的问题是您一次又一次地遍历每个bin的整个输入。 只处理一次输入,然后只写入相关的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM