#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, а затем манипулируйте ими.