我正在寻找如何将 WAV 文件中的数据分成其组成音符的方法。我使用以下命令加载 WAV 文件:
import scipy.io.wavfile as wavfile
rate, data = wavfile.read('scale.wav')
time = np.arange(len(data[:,0]))*1.0/rate
Run Code Online (Sandbox Code Playgroud)
并绘制
plt.plot(time, data[:,0])
plt.show()
Run Code Online (Sandbox Code Playgroud)
这给了我这张图片,这是有八个音符的钢琴音阶。我想要一种方法来隔离每个音符,以便我可以找到它的频率并找出正在演奏的音符。一旦我把笔记隔离出来,我就可以处理剩下的事情了。
我尝试过找到最大值,但是有太多并且需要多次迭代才能将其降低到我想要的最大值,并且这是一种不可靠的方法,因为进行太多迭代会消除一些较低幅度的峰值。及时获得笔记的长度也很好。
编辑:所以就像你们先生们所说的那样,这非常复杂。我现在想,我只想找到“极端”峰值,然后找到这些峰值之后的极端最小值,并将其用作我的注释,因为我们不需要太大的数据片段来找出这是频率。我遇到的问题是,有很多峰值,很难只找到我想要的峰值。有任何想法吗?
如果我click.group()有多个子命令,有没有办法可以将命令行参数传递给组内的子命令?
我知道你可以从组中向下通过context,我知道我可以使用callback在命令之前执行的函数,但我不知道是否有更好的方法来执行此操作而不是使用callback.
一个例子:
@click.group()
def cli():
pass
@cli.command()
@click.argument('task')
@click.argument('task_id')
def sync(task, task_id):
click.echo('Synching: {}'.format(task))
Run Code Online (Sandbox Code Playgroud)
在这个例子中,有没有办法获得task或task_id在组方法?
假设我要创建以下三个表:
a = db.Table(
'a', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
db.Column('unique_to_a', db.INTEGER, nullable=True)
)
b = db.Table(
'b', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
db.Column('unique_to_b', db.INTEGER, nullable=True)
)
c = db.Table(
'c', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()),
db.Column('updated', server_default=func.now(), onupdate=func.current_timestamp()),
db.Column('a_id', db.Integer, db.ForeignKey('a.id'), index=True, nullable=True),
db.Column('unique_to_c', db.INTEGER, nullable=True)
)
Run Code Online (Sandbox Code Playgroud)
id所有三个( 、created和)之间都有公共列updated,也有各自独有的列。
有没有一种简单的方法来创建可以包含所有共享列的基表?
例如类似的东西
base_table = db.Table(
'base', metadata,
db.Column('id', db.Integer, nullable=False, primary_key=True),
db.Column('created', server_default=func.now()), …Run Code Online (Sandbox Code Playgroud) 我有一个数组,我想看看该数组中的任何元素是否大于或等于该数组中的任何其他元素.我可以做两个for循环,但我的数组长度为10,000或更大,因此创建了一个非常慢的程序.无论如何,我能更快地做到这一点?
[编辑]我只需要它来查看它是否大于或等于我正在查看的元素之后的元素,如果是,我需要知道它的索引.
[编辑]我将更清楚地重新解释我的问题,因为当前的解决方案不适用于我需要的东西.首先,这里有一些代码
x=linspace(-10, 10, 10000)
t=linspace(0,5,10000)
u=np.exp(-x**2)
k=u*t+x
Run Code Online (Sandbox Code Playgroud)
所以我采用一个x数组,通过将其置于高斯中获得高度,然后基于该高度,即x值通过空间传播的速度,我用k找到.我的问题是,我需要找到何时高斯变为双值函数(或换句话说,当发生冲击时).如果我做argmax解决方案,我总是得到k中的最后一个值,因为它非常接近于零,我需要在我的函数中给出一个double值的元素之后的第一个值.
[编辑]小例子
x=[0,1,2,3,4,5,6,7,8,9,10] #Input
k=[0,1,2,3,4,5,6,5,4,10] #adjusted for speed
output I want
in this case, 5 is the first number that goes above a number that comes after it.
So I need to know the index of where 5 is located and possibly the index
of the number that it is greater than
Run Code Online (Sandbox Code Playgroud) 我的七页上有三个水平滚动条,我不明白为什么.起初,我认为这是因为我的页脚,所以我改变了页脚,以确保这不是问题.更改页脚修复了我的目标网页,但没有修复下面的三个:
我看了一下,我的style.css是我唯一的样式表,我找不到问题.任何援助将不胜感激.
我没有找到我所拥有的任何地方width=100%或类似的东西.我已经阅读了其他一些帖子,并没有发现任何明显错误的事情.
python ×5
numpy ×2
arrays ×1
css ×1
html ×1
numba ×1
optimization ×1
postgresql ×1
python-3.x ×1
python-click ×1
scipy ×1
sqlalchemy ×1