我有以下代码:
result = np.zeros((samples,), dtype=[('time', '<f8'), ('data', '<f8', (datalen,))])
我想创建用于累积数据tempresult
的变量result
,并且在累积25000个样本后,我想对其执行一些操作。
所以我想做类似的事情:
result = np.zeros((samples,), dtype=[('time', '<f8'), ('data', '<f8', (datalen,))])
tempresult.append(result)
if ( len(tempresult[0] > 25000 )):
# do something
我尝试了答案代码,但出现TypeError异常:无效的类型升级
result = np.zeros((samples,), dtype=[('time', '<f8'), ('data', '<f8', (datalen,))])
if self.storeTimeStamp:
self.storeTimeStamp = False
self.timestamp = message.timestamp64
self.oldsamples = 0
for sample in range(0, samples):
sstep = self.timestamp + (self.oldsamples + sample) * step
result[sample] = (sstep, data[sample])
self.oldsamples = self.oldsamples + samples
# append
np.append(self.tempresult, result)
if len(self.tempresult) < 25000:
return
return [self.tempresult]
答案 0 :(得分:1)
1)阅读np.append
文档。
np.append(self.tempresult, result)
是错误的。 np.append
返回一个新数组;它的作用不像列表追加那样。
2)np.append
是np.concatenate
的笨拙接口。如果您不了解concatenate
,就会被append
弄得一团糟。
3)因为每次都会创建一个新数组,所以重复连接很慢。收集数组列表并在最后进行一个连接要快得多
4)使用复合词dtype
时,对concatenate
的所有输入必须具有相同的dtype
。