Преобразование списка в массив для использования функции ravel ()


109

У меня есть список на Python, и я хочу преобразовать его в массив, чтобы иметь возможность использовать ravel()функцию.


2
Пожалуйста, постарайтесь ответить на запросы о разъяснениях и улучшить свои вопросы вместо того, чтобы порождать множество не очень хороших вопросов. Наконец, прочтите внимательно этот ответ . Я думаю, это решит вашу большую проблему ...
Хорхека

Ответы:


237

Использование numpy.asarray:

import numpy as np
myarray = np.asarray(mylist)

25
Собственно, myarray = np.array(mylist)должно хватить.
fgb 07

11
ну, asarray безопаснее, так как он не копирует массивы, а просто возвращает их, так что это хорошая привычка использовать его, если только он не уверен, что у него будет копия исходных данных
EnricoGiampieri

1
@EnricoGiampieri, честно, но разве вам не нужно вытаскивать из этого массив, несмотря ни на что? Думаю, я не понимаю, как вы не получите ни одну из команд для создания нового объекта массива.
fgb 07

Команда both создаст новый массив, начиная со списка, это точно, но часто дело в том, чтобы преобразовать ввод в определенный формат для применения определенного метода, и это больше похоже на случай OP. использование asarray - хорошая привычка, если только вы не уверены, что нужна новая копия. простого набора текста arrayдостаточно, но зачем упускать возможность обучить ОП какой-то хорошей привычке, пока мы здесь?
EnricoGiampieri

Я просто хотел сказать, что @fgb предложил адекватное решение. функция .asarray возвращает объект numpy, тогда как .array возвращает вам массив напрямую. В любом случае, спасибо вам обоим, ребята!
Adrian Grzywaczewski

7

создать массив int и список

from array import array
listA = list(range(0,50))
for item in listA:
    print(item)
arrayA = array("i", listA)
for item in arrayA:
    print(item)

что означает "i"? а что это должно быть для str?
Dany Y

6

Мне нужен был способ сделать это без использования дополнительного модуля. Сначала превратите список в строку, затем добавьте в массив:

dataset_list = ''.join(input_list)
dataset_array = []
for item in dataset_list.split(';'): # comma, or other
    dataset_array.append(item)

Невозможно отредактировать опечатку: первая строка должна бытьdataset_list = ';'.join(input_list)
Alex Poca

2

Если все, что вам нужно, это вызов ravelвашего (вложенного, я полагаю?) Списка, вы можете сделать это напрямую, numpyкастинг выполнит за вас:

L = [[1,None,3],["The", "quick", object]]
np.ravel(L)
# array([1, None, 3, 'The', 'quick', <class 'object'>], dtype=object)

Также стоит упомянуть, что вам совсем не нужно проходить через numpyэто .


-1

Используйте следующий код:

import numpy as np

myArray=np.array([1,2,4])  #func used to convert [1,2,3] list into an array
print(myArray)

-13

если у переменной b есть список, вы можете просто сделать следующее:

создайте новую переменную «a» как: a=[] затем присвойте список «a» как:a=b

теперь "a" содержит все компоненты списка "b" в массиве.

Итак, вы успешно преобразовали список в массив.


8
На самом деле нет ... это совершенно неправильно. Все, что у вас будет, это две переменные, указывающие на один и тот же список, а не на массив numpy.
Ajean
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.