如何向MXNet NDArray中追加元素?附numpy实现示例
在MXNet NDArray中实现类似NumPy append的数组追加操作
我完全理解你想要实现的效果——就像你用NumPy写的那样,动态沿着行轴(axis=0)给空数组逐步追加元素。确实MXNet的NDArray没有内置的append()方法,但我们可以用mx.nd.concat()函数来达成完全一致的目的,下面是对应实现代码:
import mxnet as mx # 初始化形状为(0,3)的空NDArray,指定整数类型 mx_a1 = mx.nd.empty((0,3), dtype='int32') # 第一波追加两行数据 mx_a1 = mx.nd.concat(mx_a1, mx.nd.array([[1,2,3],[4,5,6]]), dim=0) # 第二波追加一行数据 mx_a1 = mx.nd.concat(mx_a1, mx.nd.array([[7,8,9]]), dim=0) # 转成NumPy数组方便查看输出(MXNet NDArray直接打印会带设备信息) print("\nmx_a1:\n", mx_a1.asnumpy()) print(mx_a1.shape)
简单说明:
mx.nd.concat()是MXNet专门用于拼接多个NDArray的函数,其中dim参数和NumPy里的axis作用完全一致,用来指定拼接的轴方向。- 和你用NumPy的逻辑一样,每次拼接后把结果重新赋值给原变量,就能实现逐步扩展数组的效果。
- 最后用
asnumpy()把NDArray转成NumPy数组打印,是因为MXNet的NDArray默认打印会附带设备(CPU/GPU)信息,转成NumPy格式更贴近你原来的输出样式。
内容的提问来源于stack exchange,提问作者u2gilles
相关产品推荐
相关产品推荐

