Tutorial Come scrivere funzioni MatLab in Python

Blog

Panoramica

Recentemente nel mio lavoro, stavo riscrivendo algoritmi sviluppati in MatLab a Pitone , alcune funzioni non sono così semplici da adattare, specialmente le funzioni array che vengono chiamate Array di celle .



MatLab ha un FUOCO dove puoi chiamare le funzioni MatLab tramite Python. L'idea, tuttavia, non era quella di utilizzare MatLab, ma lo stesso algoritmo funziona allo stesso modo utilizzando solo Python e NumPy , e il GNU Octave ha anche un'API simile a quella di MatLab.

Per mantenere la compatibilità, ho creato funzioni con lo stesso nome che vengono utilizzate in MatLab che è incapsulato in una classe chiamata Precisione .



1. Test

Crea il clone del repository e segui le istruzioni nel file README:

Di seguito mostrerò alcuni esempi, questi sono contenuti negli unit test.



1.1 Avvia l'ora del cronometro

Misurare il tempo impiegato nell'elaborazione.

from precision import Precision p = Precision() p.tic() for i in range(0, 1000): print(i) p.toc()

L'output sarà simile a questo:

: > Elapsed time is 0:0:2 secounds.

1.2 Percentili di un set di dati

Questo è usato per ottenere un percentile. Nell'esempio seguente, stiamo creando un intervallo di date ordinali tagliando il 5% da sinistra e il 5% da destra.

from datetime import datetime from precision import Precision p = Precision() d = [i for i in p.dtrange(datetime(2018, 6, 12), datetime(2059, 12, 12), {'days':1, 'hours':2})] x = [p.datenum(i.date()) for i in d] x1 = p.prctile(x, 5) x2 = p.prctile(x, 95) r = (x2 - x1)

L'output sarà simile a questo:

5% lower: 737980.1 5% higher: 751621.9 delta: 13641.800000000047

1.3 Matrice di celle (cell2mat)

Questo converte un array di celle in un array ordinario del tipo di dati sottostante.

from precision import Precision p = Precision() p.cell2mat([[1, 2], [3, 4]]) p.cell2mat('1 2; 3 4')

L'output sarà simile a questo:

matrix([[1, 2], [3, 4]])

1.4 Matrice di celle (num2cell)

Converti array in array di celle con celle di dimensioni coerenti.

import numpy from precision import Precision p = Precision() x = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], numpy.int64) p.num2cell(x)

L'output sarà simile a questo:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

1.5 Stringhe concatenate (strcat)

Questo concatena le stringhe orizzontalmente usando strcat.

import pandas from precision import Precision p = Precision() df = pandas.DataFrame(data={'A': [1, 2], 'B': [3, 4]}, dtype=numpy.int8) p.strcat(df, 'B')

L'output sarà simile a questo:

['3', '4']

1.6 Istogramma (istogramma)

Questo conta il numero di valori in x che si trovano all'interno di ogni intervallo di bin specificato. L'input, binranges, determina gli endpoint per ogni bin. L'output, bincounts, contiene il numero di elementi da x in ogni bin.

ottieni il parametro URL javascript
import numpy from precision import Precision p = Precision() v = numpy.array([[1.5, 2.0, 3], [4, 5.9, 6]], numpy.int64) p.histc(v, numpy.amax(v) + 1)

L'output sarà simile a questo:

(array([1, 1, 1, 0, 1, 1, 1]), array([1., 1.71428571, 2.42857143, 3.14285714, 3.85714286, 4.57142857, 5.28571429, 6.]))

1.7 Unico

Ricerca di valori univoci in una matrice e restituzione di indici, inversi e conteggi.

import numpy from precision import Precision p = Precision() x = [0, 1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 7] p.unique(numpy.array([x]))

L'output sarà simile a questo:

array([[array([0, 1, 2, 3, 4, 5, 6, 7]), array([[ 0, 1, 3, 4, 5, 7, 9, 10]]), array([0, 1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 7]), array([1, 2, 1, 1, 2, 2, 1, 3])]], dtype=object)

1.8 Sovrapposizioni

Alla ricerca delle sovrapposizioni tra due array che restituiscono l'indice.

import numpy from precision import Precision p = Precision() x, y = p.overlap2d(numpy.array(['A','B','B','C']), numpy.array(['C','A','B','C','D']))

L'output sarà simile a questo:

(array([0, 1, 2, 3]), array([1, 2, 0, 3]))

Considerazioni

Ci sono funzioni che non sono esattamente MatLab ma serviranno da supporto, spero possa aiutare qualcuno. C'è un articolo interessante in NumPy per gli utenti che stanno migrando da MatLab a Python.

Ulteriori letture

MATLAB vs Python: perché e come effettuare il passaggio

Creazione di grafici in Python con Matplotlib

Tutorial Python - Programmazione GUI Python - Esempi GUI Python (Tutorial Tkinter)

Codice Python 3 essenziale per le liste

================================================ == =========

#python #matlab

dzone.com

Tutorial Come scrivere funzioni MatLab in Python

Un tutorial sulla scrittura di funzioni simili a MatLab usando il linguaggio Python e la libreria NumPy.