Как преобразовать список 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()

Другие вопросы по тегам