prima domanda qui. Cercherò di essere conciso.Come salvare dizionari e array nello stesso archivio (con numpy.savez)
Sto generando più array contenenti informazioni sulle funzionalità per un'applicazione di apprendimento automatico. Poiché gli array non hanno dimensioni uguali, li memorizzo in un dizionario piuttosto che in un array. Ci sono due diversi tipi di funzionalità, quindi sto usando due dizionari diversi.
Genero anche etichette con le caratteristiche. Queste etichette sono memorizzate in array. Inoltre, ci sono stringhe contenenti i parametri esatti utilizzati per l'esecuzione dello script e un timestamp.
Tutto sommato sembra che questo:
import numpy as np
feature1 = {}
feature2 = {}
label1 = np.array([])
label2 = np.array([])
docString = 'Commands passed to the script were...'
# features look like this:
feature1 = {'case 1': np.array([1, 2, 3, ...]),
'case 2': np.array([2, 1, 3, ...]),
'case 3': np.array([2, 3, 1, ...]),
and so on... }
Ora il mio obiettivo sarebbe quello di fare questo:
np.savez(outputFile,
saveFeature1 = feature1,
saveFeature2 = feature2,
saveLabel1 = label1,
saveLabel2 = label2,
saveString = docString)
Questo funziona apparentemente (vale a dire un tale file viene salvato con nessun errore gettato e può essere caricato di nuovo). Tuttavia, quando provo a caricare ad esempio la funzione dal file di nuovo:
loadedArchive = np.load(outFile)
loadedFeature1 = loadedArchive['saveFeature1']
loadedString = loadedArchive['saveString']
Poi invece di ottenere un dizionario di nuovo, ho una serie NumPy di forma (0), dove non so come accedere il contenuto:
In []: loadedFeature1
Out[]:
array({'case 1': array([1, 2, 3, ...]),
'case 2': array([2, 3, 1, ...]),
..., }, dtype=object)
anche stringhe diventano matrici e ottenere uno strano tipo di dati:
In []: loadedString.dtype
Out[]: dtype('|S20')
Così, in breve, io parto dal presupposto che non è come è fatto correttamente. Tuttavia preferirei non mettere tutte le variabili in un unico grande dizionario perché le recupererò in un altro processo e vorrei semplicemente ripetere il ciclo su dictionary.keys() senza preoccuparmi del confronto tra stringhe.
Tutte le idee sono molto apprezzate. Grazie
fantastico! grazie! – surchs
Preferisco accedere all'elemento in un array '' '-a forma di' testarr.flat [0] '. Per il lettore curioso, è anche possibile usare una tupla vuota come in 'testarr [()]', ma questo fa male la leggibilità. –