我正在尝试构建一个像Shazam这样的音频指纹算法。
我有一个可变长度的频点数据数组,如下所示:
[[69, 90, 172],
[6, 18, 24],
[6, 18],
[6, 18, 24, 42],
[]
...我想把它画成像这样的光谱图。我的数据没有明确的时间序列轴,但每一行都是0.1s的时间片段。我知道plt.specgram。

发布于 2020-05-11 04:36:49
np.repeat可以创建一个附带的x数组,它需要一个从输入值计算出的大小数组。
这里是一个例子,假设x是.1分开的(就像文章中的描述,但不像例子中的图片)。
import numpy as np
import matplotlib.pyplot as plt
# ys = [[69, 90, 172], [6, 18, 24], [6, 18], [6, 18, 24, 42]]
ys = [np.random.randint(50, 3500, np.random.randint(2, 6)) for _ in range(30)]
sizes = [len(y) for y in ys]
xs = [np.repeat(np.arange(.1, (len(ys) + .99) / 10, .1), sizes)]
plt.scatter(xs, np.concatenate(ys), marker='x', color='blueviolet')
plt.show()

https://stackoverflow.com/questions/61715625
复制相似问题