如何将元素追加到mxnet NDArray?

时间:2018-04-17 08:39:10

标签: mxnet numpy-ndarray

在numpy中,可以使用np.append()将元素附加到数组。

但是,虽然numpy和mxnet数组应该相加,但NDArray类中没有append()函数。

更新(18/04/24): 谢谢你。事实上,我试图实现的是numpy:

import numpy as np
np_a1 = np.empty((0,3), int)
np_a1 = np.append(np_a1, np.array([[1,2,3],[4,5,6]]), axis=0)
np_a1 = np.append(np_a1, np.array([[7,8,9]]), axis=0)
print("\nnp_a1:\n", np_a1)
print(np_a1.shape)

感谢您的回答,我做到了:

import mxnet as mx
nd_a1 = mx.nd.array([[0, 0, 0]])
# nd_a1 = mx.nd.empty((0,3))
nd_a1 = mx.nd.concat(nd_a1, mx.nd.array([[1,2,3],[4,5,6]]), dim=0)
nd_a1 = mx.nd.concat(nd_a1, mx.nd.array([[7, 8, 9]]), dim=0)
print("\nnd_a1", nd_a1)
print(nd_a1.shape)

但我无法弄清楚如何从一个空的nd数组开始。 从:

开始
nd_a1 = mx.nd.empty((0,3))

不起作用

1 个答案:

答案 0 :(得分:2)

您可以使用mx.nd.concat来实现此目的。使用numpy文档中给出的示例,您需要在连接之前小心维度。 MXNet适用于批量数据(通常是第一维,如果是批量维度),因为这在训练/使用神经网络时很有用,但这使得下面的示例看起来比实际中更复杂。

import numpy as np
import mxnet as mx

a = np.array([1, 2, 3])
b = np.array([[4, 5, 6], [7, 8, 9]])
out = np.append(a, b)
print(out)

a = mx.nd.array([1, 2, 3])
b = mx.nd.array([[4, 5, 6], [7, 8, 9]])
a = a.expand_dims(0)
out = mx.nd.concat(a, b, dim=0)
out = out.reshape(shape=(-1,))
print(out)