簡體   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