抱歉,我不确定如何更准确地命名标题。
我有一个数组,想要将其均匀分成3个数组,然后每个数组的大小都是原始数组通过平均值下采样得到的不同版本。
这是我的代码:
import numpy as np
a = np.arange(100)
bins = [5, 4, 3]
split_index = [[20, 39], [40, 59], [60, 80]]
b = []
for count, item in enumerate(bins):
start = split_index[count][0]
end = split_index[count][1]
increment = (end - start) // item
b_per_band = []
for i in range(item):
each_slice = a[start + i * increment : start + (i + 1) * increment]
b_per_band.append(each_slice.mean())
b.append(b_per_band)
print(b)
结果:
[[21.0,24.0,27.0,30.0,33.0],[41.5,45.5,49.5,53.5],[62.5, 68.5,74.5]]
所以我通过循环遍历容器,找到每个步骤的增量。然后根据情况进行切片并将平均值添加到结果中。
但这真的很丑陋,最重要的是性能不佳。由于我在处理音频谱的情况下,我真的很想了解实现相同结果的更有效方法。
有什么建议吗?
a
中获取由split_index
给出的切片;2)对于每个切片,您计算长度为bins
的“子切片”;3)对于每个子切片,您取平均值。这样正确吗? - FObersteiner