如何解决使用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 function与concatenate function不同,它强制要在所有轴上堆叠的数组之间保持尺寸相等。 cupy.stack
和numpy.stack
都在内部调用其相应的concatenate
函数来加入数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。