[英]amplitude spectrum in 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
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.