Как преобразовать список 1-D ndarray в 2-ый ndarray (mxnet ndarray)
В этом примере у меня есть список 1-го ndarray, длиной 9, список имеет 9 элементов, и каждый из них имеет shape=(2048,)
так полностью 9 * (2048,)
Я получаю эти ndarray
от mxnet
так что каждый из ndarray
является <NDArray 2048 @cpu(0)>
массив dtype=numpy.float32
Если я использую np.asarray
чтобы преобразовать этот список, он становится следующим результатом
shape=<class 'tuple'>: (9, 2048, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
Очевидно, я хочу 2-D массив, с shape=(9, 2048)
, Как решить эту проблему?
PS: я обнаружил эту проблему, сохранив npy
файл и загрузить его. Я непосредственно сохранил список, прежде чем преобразовать его в ndarray
(Итак np.save
превратит список в ndarrary
автоматически) и после того, как я загрузил его, я обнаружил, что форма стала чем-то, что вверху, что действительно ненормально
Ответ ниже, np.vstack
а также np.array
оба работают на общее list
в ndarray
проблема, но не может решить мою, поэтому я сомневаюсь, что это какой-то особый случай mxnet
2 ответа
Ты можешь использовать np.vstack
, Вот пример:
import numpy as np
li = [np.zeros(2048) for _ in range(9)]
result = np.vstack(li)
print(result.shape)
Это выводы (9, 2048)
по желанию.
Поскольку парень, который дает правильный ответ в качестве комментария, решает мою проблему, но не публикует ответ, я бы опубликовал его ответ здесь для других, кто также может столкнуться с этой проблемой
На самом деле, np.array
а также mxnet.ndarray
не совсем то же самое, так что напрямую звонить опасно numpy
методы на mxnet.ndarray
, Использовать numpy
метод в mxnet.ndarray
мы должны сначала преобразовать массив в np.array
, который
mx_ndarray = mxnet.ndarray.zeros(5)
np_array = mx_ndarray.asnumpy()
затем numpy
методы могут быть использованы на np_array
Поскольку приведенный выше ответ является более общим (np.vstack()
), Я принимаю это и просто опубликовать этот ответ в качестве ссылки, а также, np.array()
делает то же самое в приведенном выше примере с np.vstack()