2

在 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))

不工作

4

1 回答 1

5

您可以使用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)
于 2018-04-24T00:54:20.803 回答