使用Cupy将数组追加到矩阵 更多有关此内容:

问题描述

我正在使用Cupy创建矩阵和数组。我只是想删除矩阵的第一行,然后将新数组水平附加到矩阵中。我计划将其放入一个循环中,在该循环中,我将不断删除矩阵中的第一行并将新数组追加到底部。但是我一直收到错误消息:2020-02-05 09:26:00 <class 'datetime.datetime'> 。矩阵的形状是(10,100),数组的形状是(100,)。

ValueError: All arrays to concatenate must have the same ndim

我在连接时遇到了同样的问题,并且对于cupy而言似乎不存在append。

解决方法

new_frame数组的尺寸应与数组a完全相同,以便在cp.stack函数中使用。在这种情况下,将cp.concatenate的尺寸更改为(1,100)后,需要使用new_frame。更正后的脚本如下:

import cupy as cp

hori_avg = [0]*100
buffer_size = 10
width = 100 
a = cp.zeros((buffer_size,width))

new_frame = cp.ones((1,100))*3

a = a[1:,:]                        #delete first row
a = cp.concatenate((a,new_frame),axis=0)

cupy.concatenate文档中所述,

“ tup(数组序列)–要连接的数组。 所有这些都应具有相同的尺寸,除了 指定的轴”

这就是为什么我用new_frame修改了new_frame = cp.ones((1,100))*3行的数组形状,以使未指定的轴(axis = 1)具有相同的尺寸(即100)

更多有关此内容:

不幸的是,cupy文档尚不完善(截至2020年11月),但在大多数情况下,我们可以查看相应的Numpy文档。

numpy stack functionconcatenate function不同,它强制要在所有轴上堆叠的数组之间保持尺寸相等。 cupy.stacknumpy.stack都在内部调用其相应的concatenate函数来加入数组。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...