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.