Conversione da elenco a array per utilizzare la funzione ravel ()


109

Ho un elenco in Python e voglio convertirlo in un array per poter usare la ravel()funzione.


2
Per favore, prova a rispondere alle richieste di chiarimenti e migliorare le tue domande invece di generare molte domande non proprio buone. Infine, leggi attentamente questa risposta . Penso che risolva il tuo grosso problema ...
jorgeca

Risposte:


237

Usa numpy.asarray:

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

25
In realtà, myarray = np.array(mylist)dovrebbe essere sufficiente.
fgb

11
beh, asarray è più sicuro in quanto non copia gli array ma semplicemente li restituisce, quindi è una buona abitudine usarlo a meno che non si sia sicuri di avere una copia dei dati originali
EnricoGiampieri

1
@EnricoGiampieri, giusto, ma non avresti bisogno di ottenere un array da questo, non importa cosa? Immagino di non seguire come non si otterrebbe nessuno dei comandi per generare un nuovo oggetto array.
fgb

entrambi i comandi creeranno un nuovo array partendo da un elenco, questo è certo, ma spesso il punto è convertire un input in un formato specifico per applicare un determinato metodo, e questo assomiglia di più al caso dell'OP. usare asarray è una buona abitudine a meno che non si sia certi che sia necessaria una nuova copia. la semplice digitazione arrayè sufficiente, ma perché lasciarsi sfuggire la possibilità di educare l'OP a qualche buona abitudine mentre siamo qui?
EnricoGiampieri

Volevo solo dire che @fgb ha proposto una soluzione adeguata. la funzione '.asarray' restituisce un oggetto numpy mentre '.array ti restituisce direttamente un array. Comunque, grazie a tutti e due ragazzi!
Adrian Grzywaczewski

7

creare un array int e un elenco

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)

cosa significa la "i"? e cosa dovrebbe essere per str?
Dany Y

6

Volevo un modo per farlo senza utilizzare un modulo aggiuntivo. Prima trasforma l'elenco in stringa, quindi aggiungi a un array:

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

Non è possibile modificare un errore di battitura: la prima riga dovrebbe esseredataset_list = ';'.join(input_list)
Alex Poca

2

Se tutto ciò che vuoi è chiamare ravelil tuo elenco (annidato, immagino?), Puoi farlo direttamente, numpyfarà il casting per te:

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

Vale anche la pena ricordare che non è necessario passare numpyaffatto .


-1

Usa il codice seguente:

import numpy as np

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

-13

se la variabile b ha un elenco, puoi semplicemente fare quanto segue:

crea una nuova variabile "a" come: a=[] quindi assegna l'elenco a "a" come:a=b

ora "a" ha tutti i componenti della lista "b" in array.

quindi hai convertito con successo l'elenco in array.


8
In realtà, no ... questo è completamente sbagliato. Tutto ciò che avrai sono due variabili che puntano allo stesso elenco, non un array numpy.
Ajean
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.