【发布时间】:2017-04-12 13:25:18
【问题描述】:
我在 Python 中使用了一个名为 SoundDevice 的库。我正在尝试记录一个未定义长度的 NumPy 数组。使用一些对 Queue 对象执行相同操作的示例代码,我使用 numpy 的 append 重写了回调。数据似乎在回调中,但由于我不清楚的原因 append 没有写入数组。在测试结束时,我得到了原始的空数组。
代码如下:
import numpy as np
import sounddevice as sd
fs = 44100
sd.default.samplerate = fs
sd.default.device = 10
x = np.array([],ndmin = 2)
def Record():
def callback(indata,frames,time,status):
if status:
print(status,flush=True)
np.append(x,indata.copy())
with sd.InputStream(fs,10,channels=1,callback = callback):
print("Recording started...")
def StopRec():
sd.stop()
print("Recording stopped.")
print(x)
Record()
for i in range(10):
pass
StopRec()
【问题讨论】:
-
来自the
numpy.appenddocstring 中对返回值的描述:“带有附加到轴的值的 arr 副本。请注意,附加不会就地发生:分配并填充了一个新数组。”也看看stackoverflow.com/questions/13506122/…