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