|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2008
Messaggi: 135
|
[Python] richiesta su come organizzare i miei dati. database o che altro?
ciao a tutti,
sono in procinto di migrare un algoritmo scritto in Matlab a Python. la ragione principale é che voglio sfruttare una certa libreria (cvxopt) al posto dell'equivalente Matlab. la ragione secondaria, nonché motivo di questo topic, é la possibilitá di gestire meglio i dati prodotti. in pratica questo algoritmo deve gestire una serie di oggetti di numero variabile. questi oggetti hanno una serie di variabili numeriche. in particolare mi interessa poter accedere efficacemente all'oggetto con il minor valore di ogni variabile. esempio, lista di rettangoli. variabili: altezza, lunghezza. mi interessa poter accedere efficacemente sia al rettangolo piú basso sia a quello piú stretto. potete consigliarmi che metodo utilizzare? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Bisogna vedere qual è l'ordine di grandezza degli elementi che manipoli, e come li manopoli.
Insomma, senza una qualche descrizione non dico dell'algoritmo, ma degli usi che fa dei numeri, è difficile cercare di consigliarti.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Nov 2008
Messaggi: 135
|
Quote:
il numero di coni massimo dipende dal problema specifico ma potenzialmente potrebbe arrivare alle decine di migliaia se non di piú per funzioni complesse e/o dimensioni elevate dello spazio. sostanzialmente vorrei poter gestire il maggior numero di oggetti possibile dato che non c'é limite alla complessitá del problema. le uniche manipolazioni che mi servono sono: -trovare quello dal valore minimo per una certa caratteristica -eliminare tale oggetto -crearne di nuovi e inserirli |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Il problema è relativo anche a dove risiede l'input del problema e se hai bisogno di un output persistente (ovvero un file o appunto una tabella) oppure ti basta stampare qualcosa a video. Comunque, se devi gestire un numero potenzialmente molto elevato di variabili, l'utilizzo di un db può sicuramente facilitarti la vita; non conosco l'interazione Python/database, ma suppongo non ci voglia molto a fare una select, una delete ed una insert
__________________
Il sole è giallo |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
No, è veramente banale, infatti.
Ma dall'ordine di grandezza, posto che la dimensione n sia un numero ragionevolmente piccolo, io opterei per far stare tutto in memoria.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Sì, per l'ordine di grandezza di cui si parla concordo in pieno; prenderei in considerazione l'ipotesi database solo in quanto l'utente ha scritto "potenzialmente", il che potrebbe anche voler dire che a priori l'ordine di grandezza potrebbe crescere; oppure se l'utente ne trae qualche vantaggio in termini di input (un input copioso è facile da gestire a livello tabellare) o di output, nel caso il programma dovesse salvare una grossa mole di dati. Se è solo per appoggiare le strutture temporanee, invece, il db sarebbe effettivamente eccessivo, nonchè peggiore in termini prestazionali.
__________________
Il sole è giallo |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Nov 2008
Messaggi: 135
|
Quote:
la serie di oggetti non costituiscono ne input ne output ma sono solo utilizzati internamente dall'algoritmo. salvarli per un'analisi successiva peró sarebbe utile per analizzare il comportamento dell'algoritmo. ma l'alternativa al database quale sarebbe? l'unica che vedo é costruire una struttura dati apposta costituita da una serie di alberi (B-tree o equivalenti) ciascuno per ogni variabile. a quel punto peró diventa difficile eliminare gli oggetti visto che bisogna eliminarli da tutti gli alberi. senza contare che dovrei implementare anche gli alberi stessi visto che non ho trovato niente in giro. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Dipende da come sono fatti questi oggetti e come si referenziano l'un l'altro. Vedendo il problema dall'esterno, basterebbe creare una classe che modella il singolo oggetto (e le variabili dell'oggetto saranno quindi attributi della classe) e quindi creare un bell'array (o collection, o quel che si usa in Python) di tali oggetti.
__________________
Il sole è giallo |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:34.




















