Как добавить элемент в mxnet 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))

не работает


person u2gilles    schedule 17.04.2018    source источник


Ответы (1)


Вы можете использовать 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)
person Thom Lane    schedule 24.04.2018