Kolmogorov_Scale
Profilo di
Nome | Kolmogorov_Scale |
---|---|
Indirizzo email | a.peppe87@gmail.com |
Avatar | |
Messaggi | 32 |
Firma forum | |
<< Somewhere, something incredible is waiting to be known >> [Carl Sagan] |
-
- 2024-10-29 12:49:23
- Re: Sostituzione prima superdiagonale
- Forum >> Programmazione Python >> Calcolo scientifico
- nuzzopippo said @ 2024-09-27 11:21:50:Rileggendo il post mi son reso conto di aver travisato il quesito posto a @Kolmogorov Scale, che probabilmente non verteva sul come ottenere la super-diagonale bensì su come variarne i valori con metodi propri di numpy ... chiedo venia per la mia risposta fuori logo.
In merito ai metodi di numpy (eventualmente mi si corregga) dalle ricerche effettuate non sembra sia possibile essendo il parametro "offset" implementato in funzioni tipo fill_diagonal e simili, è un argomento su cui si discute in merito ma di la da venire.
Pur non essendo l'algebra lineare materia a me familiare, giusto per chiedere scusa della mia precedente cattiva interpretazione, ho implementato una piccola funzione per la sostituzione dei valori diagonali e/o super/sub-diagonali tramite una funzione manipolatrice od anche un iterabile, segue il codice :
import numpy as np from typing import Any def my_fill_diag(a: np.array, val: Any, o: int=0, w: bool=True) -> None: ''' Emulazione di numpy.fill_diagonal con applicazione delle sostituzioni a super e sub diagonali. Parametri: - a : array multidimensionale cui applicare le sostituzioni; - val : iterabile o funzione per la definizione delle sostituzioni; - o : offset rispetto alla diagonale base, se positivo sarà applicato sulle colonne, se negativo sulle righe di "a", nel caso superi le colonne o le righe disponibili non sarà applicato; - w : se vero il ciclo di sostituzione si interromperà in caso si raggiunga l'ultima colonna, altrimenti si riposiziona sulla prima e continua. In ogni caso la sostituzione termina raggiunta l'ultima riga. Nota: Qualora "val" sia un iterabile ed abbia dimensioni inferiori a quelle della diagonale i valori saranno riproposti ciclicamente. ''' rows, cols = a.shape c = 0 r = 0 if o > 0 and o < cols: c = o elif o < 0 and abs(o) < rows: r = abs(o) if 'function' in repr(type(val)): while r < rows: a[r, c] = val(a[r, c]) r += 1 c += 1 if c == cols: if w: break else: c = 0 else: i = 0 while i < len(val): a[r, c] = val r += 1 c += 1 if r == rows: break if c == cols: if w: break else: c = 0 i += 1 if i == len(val): i = 0
Nella doc-string della funzione ho cercato di farne comprendere i parametri ed il funzionamento, eventuali suggerimenti per migliorarla (anche come stesura e/o elasticità) sono ben accetti
Segue una sessione shell di test per esemplificarne l'uso :
Python 3.12.3 (main, Sep 11 2024, 14:17:37) [GCC 13.2.0] on linux Type "help", "copyright", "credits" or "license()" for more information. from prova_01 import my_fill_diag import numpy as np A = np.arange(1, 17).reshape(4, 4) A array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]]) def my_func(value): return value * 2 my_fill_diag(A, my_func, 1) A array([[ 1, 4, 3, 4], [ 5, 6, 14, 8], [ 9, 10, 11, 24], [13, 14, 15, 16]]) A = np.arange(1, 17).reshape(4, 4) B = [100, 200] A = np.arange(1, 17).reshape(4, 4) my_fill_diag(A, B, 1, False) A array([[ 1, 100, 3, 4], [ 5, 6, 200, 8], [ 9, 10, 11, 100], [200, 14, 15, 16]]) A = np.arange(1, 17).reshape(4, 4) my_fill_diag(A, B, -1, False) A array([[ 1, 2, 3, 4], [100, 6, 7, 8], [ 9, 200, 11, 12], [ 13, 14, 100, 16]])
Spero possa essere utile a qualcuno e rinnovo le mie scuse per la precedente interpretazione.
I miei saluti
Ciao pippo, scusami per il ritardo osceno ma sono stato sotto esami e ho dovuto staccarmi completamente dalla vita social.
Alla fine ho risolto nella maniera più semplice possibile: e cioè costruendo la mia Matrice come una somma tra una matrice identità più i singoli array-valori ottenuti dal calcolo
numerico, che andavano a riempire le superdiagonali della mia matrice di partenza.<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-09-23 12:51:50
- Sostituzione prima superdiagonale
- Forum >> Programmazione Python >> Calcolo scientifico
- Buongiorno amici pythoniani
oggi quesito numpy;
data la seguente matrice:
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
esiste un comando numpy che consenta di fare il fill della prima superdiagonale? (quindi sostituire in un colpo l'array ([2,6]) ) ?
Grazie in anticipo, come sempre.
A presto
--- Ultima modifica di Kolmogorov Scale in data 2024-09-23 12:52:17 ---
--- Ultima modifica di Kolmogorov Scale in data 2024-09-23 12:52:34 ---<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-09-16 20:10:13
- Re: Confronto tra liste.
- Forum >> Principianti
- oppure
>>> A = [1, 2, 3, 4] >>> B = [3, 4, 5, 6, 7] >>> C = [6, 7, 8, 9] >>> print(*[f"elemento in comune: {i}" for i in set(A) & set(B)] or ["niente in comune"], sep="\n") elemento in comune: 3 elemento in comune: 4 >>> print(*[f"elemento in comune: {i}" for i in set(A) & set(C)] or ["niente in comune"], sep="\n") niente in comune >>> print(*[f"elemento in comune: {i}" for i in set(B) & set(C)] or ["niente in comune"], sep="\n") elemento in comune: 6 elemento in comune: 7
Ero riuscito a scrivere una funzione simile utilizzando set &, ma avevo la necessità di operare con le liste.
Comunque anche questo script interessante...
Grazie.<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-09-16 20:07:17
- Re: Confronto tra liste.
- Forum >> Principianti
- nuzzopippo said @ 2024-09-16 19:39:07:Kolmogorov Scale said @ 2024-09-16 13:16:39:Vorrei che il programma effettui il confronto e stampi semplicemente a fine slicing "niente in comune".
Come si può fare? le sto tentando tutte :\È piuttosto semplice, guarda sotto :
Python 3.12.3 (main, Jul 31 2024, 17:43:4 8) [GCC 13.2.0] on linux Type "help", "copyright", "credits" or "license()" for more information. A = [1, 2, 3, 4] B = [3, 4, 5, 6, 7] C = [6, 7, 8, 9] print() if [print(f'elemento in comune: {i}') for i in A if i in B] else print('niente in comune') elemento in comune: 3 elemento in comune: 4 print() if [print(f'elemento in comune: {i}') for i in A if i in C] else print('niente in comune') niente in comune print() if [print(f'elemento in comune: {i}') for i in B if i in C] else print('niente in comune') elemento in comune: 6 elemento in comune: 7
Ottenuto semplicemente sfruttando le definizioni base del linguaggio python, roba che val sempre la pena di approfondire
Ciao
È un tipo di scrittura che non avevo mai visto prima<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-09-16 13:16:39
- Confronto tra liste.
- Forum >> Principianti
- Buongiorno a tutti amici pythoniani.
Da qualche giorno sto cercando, senza successo, di scrivere un programmino che esegua un confronto tra due o più liste e ne stampi il/gli elementi in comune.
Non riesco però a ottenere quello che voglio nel caso in cui le due liste non abbiamo elementi comune.
Mi spiego meglio; in questo caso l'output mi va bene;
lista1 = [1,2,3,4] lista2 = [3,4,5,6,7] for i in lista1: if i in lista2: print(f"elemento in comune: {i}") else: pass #output in comune: 3 in comune: 4
il problema sussiste nel momento in cui le due liste non hanno elementi in comune;
Vorrei che il programma effettui il confronto e stampi semplicemente a fine slicing "niente in comune".
e non
niente in comune niente in comune niente in comune niente in comune
Come si può fare? le sto tentando tutte :\<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-08-21 17:40:27
- Re: Esportare un codice per una presentazione
- Forum >> Programmazione Python >> IDE ed Editor
- nuzzopippo said @ 2024-07-29 08:54:24:Non ho esperienza diretta con il microdoft word, ho abbandonato windows nwgli anni '90, ma san google aiuta, da una ricerca in rete questa pagina mi sembra possa aiutarti.
Per altro in libreoffice writer, sotto linux, per inserire blocchi di codice personalmente uso definire uno stile utilizzante un carattere a passo fisso, allinamento a sinistra e numerazione dei paragrafi ripartente da "1", per evidenziare il codice mi affido a dei plug-in (COOder, attualmente).
Dai sapere, ciao
nuzzopippo said @ 2024-07-29 08:54:24:eccomi!!! ho risolto nella maniera più semplice possibile, sono passato a libreoffice, installando COOder e lavorando personalizzando come piace a me allineamenti e colori. Best choice<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-07-28 18:38:53
- Esportare un codice per una presentazione
- Forum >> Programmazione Python >> IDE ed Editor
- Buonasera a voi amici pythoniani.
Dovrei allegare dei codici python ad un documento word.
Esiste un modo per esportare un codice/copiarlo/salvarlo (senza perdere indentazione e i colori) per poi inserirlo nel mio documento word?
Grazie a chi risponderà; a presto.
<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-05-25 00:31:26
- Latex su python
- Forum >> Principianti
- Buonasera ragazzi, dovrei stampare con print dei caratteri in latex;
per intenderci, un risultato numerico, a cui devo associare delle dimensioni fisiche (il valore di un momento d'inerzia, in millimetri alla quarta)
print(numero mm^4) (riassunto in soldoni)
Esiste un metodo che non sia troppo complicato? non voglio appesantire il codice (già parecchio ingarbugliato) e ho trovato cose "atroci" (complicate) in giro sull'internet.
Attendo speranzoso i vostri consigli
a presto e grazie in anticipo<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-05-10 23:47:08
- Re: Valori sui markers in matplotlib
- Forum >> Programmazione Python >> Calcolo scientifico
- Gabbo said @ 2024-05-10 14:48:11:Esiste anche la libreria plotly che con il passaggio del cursore sulla linea identifica il valore.
è possibile anche segnare valori sul grafico,
ti consigli di guardare questa pagina
https://plotly.com/python/line-charts/
grazie mille gabbo!
<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]
-
- 2024-05-10 23:46:38
- Re: Valori sui markers in matplotlib
- Forum >> Programmazione Python >> Calcolo scientifico
- nuzzopippo said @ 2024-05-10 08:24:22:Se volessimo trovare un difetto a matplotlib potremmo dire che è "troppa", ci si perde nella abbondanza di funzioni che presenta e nelle correlazioni relative.
Credo che il metodo più probabilmente adatto a ciò che chiedi sia "matplotlib.pyplot.annotate", ma ne esistono altri, anche specializzati per tipi di grafico ... alcuni esempi d'uso di annotate da una discussione su stackoverflow
grazieeee
studio tutto
perdonate la risposta tardiva ma non ho ricevuto le notifiche<< Somewhere, something incredible is waiting to be known >> [Carl Sagan]