追加到一个numpy数组

时间:2018-08-03 13:32:28

标签: python numpy

我有以下代码:

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]

1 个答案:

答案 0 :(得分:1)

1)阅读np.append文档。

np.append(self.tempresult, result)

是错误的。 np.append返回一个新数组;它的作用不像列表追加那样。

2)np.appendnp.concatenate的笨拙接口。如果您不了解concatenate,就会被append弄得一团糟。

3)因为每次都会创建一个新数组,所以重复连接很慢。收集数组列表并在最后进行一个连接要快得多

4)使用复合词dtype时,对concatenate的所有输入必须具有相同的dtype