Преобразовать список в Numpy 2D массив

#python #arrays #numpy

#питон #массивы #numpy #python

Вопрос:

Как преобразовать список в numpy 2D ndarray. Например:

 lst = [20, 30, 40, 50, 60]
  

Ожидаемый результат:

 >> print(arr)
>> array([[20],
       [30],
       [40],
       [50],
       [60]])

>> print(arr.shape)
>> (5, 1)
  

Комментарии:

1. [[i] for i in x] или np.reshape([20, 30, 40, 50, 60], (-1,1)) ?

2. @Yoshi спасибо за предложение, но, похоже, это мне не совсем помогает: (

3. Я просто не понял вопрос. ответ @Sushanth — это то, что, я думаю, вы ищете 🙂

Ответ №1:

Преобразовать его в массив и изменить форму:

 x = np.array(x).reshape(-1,1)
  

изменение формы добавляет структуру столбцов. Значение -1 в reshape определяет правильное количество строк, которое требуется для изменения формы.

вывод:

 [[20]
 [30]
 [40]
 [50]
 [60]]
  

Ответ №2:

Если вам нужно, чтобы ваши вычисления были более эффективными, используйте массивы numpy вместо понимания списков. Это альтернативный способ с использованием трансляции массива

 x = [20, 30, 40, 50, 60]
x = np.array(x) #convert your list to numpy array
result = x[:, None] #use numpy broadcasting
  

если вам все еще нужен тип списка в конце, вы можете эффективно преобразовать свой результат с помощью result.tolist()

Комментарии:

1. Это не трансляция. Это просто индексирование. None является псевдонимом для np.newaxis

Ответ №3:

Вы можете использовать представление списка, а затем преобразовать его в массив numpy:

 import numpy as np

x = [20, 30, 40, 50, 60]

x_nested = [[item] for item in x]

x_numpy = np.array(x_nested)

  

Комментарии:

1. Это гораздо менее эффективный метод. При работе с числовыми данными как можно быстрее переводите их в numpy, а затем манипулируйте ими.