Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-04-2009, 10:03   #1
red.hell
Senior Member
 
L'Avatar di red.hell
 
Iscritto dal: Jan 2004
Città: Cremona
Messaggi: 3666
[Python] Verificare presenza di un array in una lista di array

sono di nuovo qui

sono leggermente migliorato con la programmazione python, sono riuscito a cominciare l'interfaccia con wxPython ed ogni giorno cerco di incrementarne le funzionalità

ora però ho un problemino
Codice:
lista_diametri_uguali=[]
        for indice in range(var.elementi[-1,0]):
            uguali=np.nonzero(var.elementi[:,3] == var.elementi[indice,3])[0]
            aaa=uguali in lista_diametri_uguali
            if aaa:
                pass
            else:
                lista_diametri_uguali.append(uguali)
devo fare una lista contenente gli indici di posizione con i valori ripetuti (per cui con un vettore v=[1,2,1,1,2,3] mi serve una lista l=([0,2,3],[1,4],[5]))

non capisco perchè alla seconda iterazione mi si blocca dando
Codice:
    aaa=uguali in lista_diametri_uguali
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
sia che io metta uguali.all() che uguali.any() l'errore è sempre lo stesso

qualche idea? potrei risolvere convertendo l'array in lista, ma non so come si fa (non l'ho trovato neanche sul sito di numpy)
red.hell è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:03   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Scusami, sono un po' rimbambito oggi, e non capisco come fai a ottenere l=([0,2,3],[1,4],[5])) da v=[1,2,1,1,2,3]
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:33   #3
red.hell
Senior Member
 
L'Avatar di red.hell
 
Iscritto dal: Jan 2004
Città: Cremona
Messaggi: 3666
sono poi riuscito a risolvere, ho trovato il comando che trasforma un array in lista
Codice:
uguali=np.ndarray.tolist(uguali)
con quel ciclo analizzo tutti gli elementi di un vettore cercando la ricorsione

provo a spiegartelo brevemente (usando l'esempio di prima):
- v[0] = 1 (non come assegnazione ma come valore)
- np.nonzero(v == v[0]) mi trova gli indici i posizione dei valorio uguali ad elemento0 in vettore (è un vettore anch'esso), per cui [0,2,3]
- controllo se questo vettore è già in lista, se c'è pass, se non c'è lo appendo alla lista (nell'esempio che ti ho fatto prima la lista è inizialmente vuota e poi diventa l=([0,2,3])
- v[1]=2
- np.nonzero(v == v[1]) da [1,4]
- controllo se è in l, non c'è, per cui lo appendo -> l=([0,2,3],[1,4])
- v[2]=1
- np.nonzero(v == v[2]) da ancora [0,2,3]
- è già in l per cui salto
- ... e via così

teoricamente si ha uno spreco di risorse di calcolo (perchè testo tutti i numeri e non controllo prima se posso evitare di cercare), ma non mi interessa perchè i vettori su cui lo uso sono abbastanza corti, massimo 200 elementi circa
red.hell è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:49   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Ho capito. E non era nemmeno difficile. Chissà dove avevo la testa.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 14:23   #5
red.hell
Senior Member
 
L'Avatar di red.hell
 
Iscritto dal: Jan 2004
Città: Cremona
Messaggi: 3666
ho un altro piccolo problema (forse non molto piccolo)

devo fare un elenco con i vari gruppi e metterci un checkbox ed un pulsante, non so a priori (mentre scrivo il codice) quanti saranno questi gruppi (dipende ovviamente dalle matrici che gli faccio mangiare), devo per cui creare questi componenti con un ciclo

voglio avere abilitato il pulsante solo quando la spunta è attiva

io per ora ho preparato questo codice
Codice:
class ElencoDiametri(wx.BoxSizer):
    def __init__(self,pannello):
        wx.BoxSizer.__init__(self,wx.VERTICAL)
        self.pannello=pannello
        lista_diametri_uguali=[]
        n_gruppi=0
        for indice in range(int(var.elementi[-1,0])):
            uguali=np.ndarray.tolist(np.nonzero(var.elementi[:,3] == var.elementi[indice,3])[0])
            if uguali in lista_diametri_uguali:
                pass
            else:
                lista_diametri_uguali.append(uguali)
                n_gruppi=n_gruppi+1
                
        self.Add(wx.StaticText(pannello, -1, 'Seleziona i diametri'),0,wx.EXPAND)
        self.Add(wx.StaticLine(pannello), 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 10)
        hbox=wx.FlexGridSizer(n_gruppi,2,20,20)
        
        self.gruppo_scelto=[]
        for indice in range(n_gruppi):
            self.gruppo_scelto.append(False)
        
        self.gruppo=0
        id_cb=[]
        id_pul=[]
        self.corr_id_cb={}
        self.coor_id_pul={}
        for indice in lista_diametri_uguali:    
            id_cb.append(wx.NewId()) 
            id_pul.append(wx.NewId()) 
            self.corr_id_cb[id_cb[-1]]=self.gruppo 
            checkbox=wx.CheckBox(pannello, id_cb[self.gruppo], str(indice))
            hbox.Add(checkbox,self.gruppo,0)
            pulsante=wx.Button(pannello, id_pul[self.gruppo], "Modifica limiti")
            pulsante.Enable(self.gruppo_scelto[self.gruppo])
            hbox.Add(pulsante,self.gruppo,1)
            checkbox.Bind(wx.EVT_CHECKBOX, self.check_sul_box, checkbox, id=id_cb[self.gruppo])
            self.gruppo=self.gruppo+1
        
        self.Add(hbox, 0, wx.EXPAND)
        
    def check_sul_box(self, event):
        print event.Checked()
        print event.GetId()
        if self.gruppo_scelto[self.corr_id_cb[event.GetId()]]:
            self.gruppo_scelto[self.corr_id_cb[event.GetId()]]=False            
        else:
            self.gruppo_scelto[self.corr_id_cb[event.GetId()]]=True
                
        self.pannello.Refresh()
però se io ho l'id del pulsante (o del checkbox) come posso cambiare un metodo (per cui passare da .Enable(False) a .Enable(True) e viceversa) su un oggetto senza sapere il nome dell'oggetto ma solo l'ID?
red.hell è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 14:40   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Purtroppo non ho mai sviluppato GUI con Python, per cui non ti posso aiutare.

Mi servirebbe conoscere in che modo è implementata la gerarchia dei componenti, e sono a zero da questo punto di vista.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 14:40   #7
red.hell
Senior Member
 
L'Avatar di red.hell
 
Iscritto dal: Jan 2004
Città: Cremona
Messaggi: 3666
mi porta bene scrivere sul forum, un attimo dopo mi viene l'idea buona che mi fa risolvere il problema (dovrei spammare di più, ma mi sa che cionci mi cazzia )

mi sono creato una lista di oggetti pulsante, vado a prendere l'oggetto nella lista da una determinata posizione

copio solo le ultime righe
Codice:
        self.lista_pul=[]
        for indice in lista_diametri_uguali:    
            id_cb.append(wx.NewId()) 
            id_pul.append(wx.NewId()) 
            self.corr_id_cb[id_cb[-1]]=self.gruppo 
            checkbox=wx.CheckBox(pannello, id_cb[self.gruppo], str(indice))
            hbox.Add(checkbox,self.gruppo,0)
            pulsante=wx.Button(pannello, id_pul[self.gruppo], "Modifica limiti")
            pulsante.Enable(self.gruppo_scelto[self.gruppo])
            self.lista_pul.append(pulsante)
            hbox.Add(pulsante,self.gruppo,1)
            checkbox.Bind(wx.EVT_CHECKBOX, self.check_sul_box, checkbox, id=id_cb[self.gruppo])
            self.gruppo=self.gruppo+1
        
        self.Add(hbox, 0, wx.EXPAND)
        
    def check_sul_box(self, event): """evento di check di scelta di un diametro"""
        if self.gruppo_scelto[self.corr_id_cb[event.GetId()]]:
            self.gruppo_scelto[self.corr_id_cb[event.GetId()]]=False            
        else:
            self.gruppo_scelto[self.corr_id_cb[event.GetId()]]=True        

        self.lista_pul[self.corr_id_cb[event.GetId()]].Enable(self.gruppo_scelto[self.corr_id_cb[event.GetId()]])        
                
        self.pannello.Refresh()
red.hell è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
La NASA annuncia alcuni aggiornamenti pe...
Meridian Space si separa da SpinLaunch e...
Gli astronomi hanno scoperto stelle che ...
Facebook cambia il feed: ora l'algoritmo...
I nuovi Vivo X500 potrebbero costare qua...
Due pallet di RTX 5090 spariti nel nulla...
Oral-B iO in offerta su Amazon: spazzoli...
Offerte TV su Amazon: LG OLED C6 a 1.139...
Offerte Apple su Amazon: AirPods Pro 3 a...
Le 12 offerte Amazon TOP del weekend: Sm...
Xiaomi Smart TV 32 è vera bestsel...
Il satellite spia russo Kosmos 2612 si t...
Blue Origin continua l'espansione: nuove...
Intel prepara un SoC da 700 TOPS: Razor ...
I nuovi Xreal 1 Pro+ arrivano in Europa ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v