2014-10-15 10 views
5

Sto provando a calcolare "kurtosis", così come altre statistiche da una matrice numpy. Calcolo delle deviazioni min, max, media e standard sono semplici come ho appena fatto.Calcolando la curtosi da una matrice numpy?

import arcpy 
arr = arcpy.RasterToNumPyArray(input_Raster) 
x = arr 
print 'Min =', x.min() 
print 'Max =', x.max() 
print 'Mean =', x.mean() 
print 'Standard Deviation =', x.std() 

quali uscite:

Min = 1.87895 
Max = 16.8343 
Mean = 8.03462 
Standard Deviation = 1.52192 

Ma questo metodo non funziona per curtosi! Come ho provato

print 'Kurtosis =', x.kurtosis() 

E ottengo: AttributeError: 'numpy.ndarray' oggetto non ha attributo 'curtosi'

quale sarebbe il codice più semplice che potevo usare per incorporare nel mio proprio per calcolare un risultato di curtosi? Grazie.

risposta

5

Numpy è limitato alle operazioni dell'array di base, è necessario raggiungere il fratello più istruito Scipy per ottenere more advanced stats functions.

scipy.stats.kurtosis(a, axis=0, fisher=True, bias=True)

Computes the kurtosis (Fisher or Pearson) of a dataset.

Quindi, from scipy.stats import kurtosis, quindi kurtosis(x).

In generale, i metodi su array Numpy sono limitati alle sole operazioni di base (max, min, ecc.). Leggermente più funzionalità è eked su metodi NumPy (es numpy.diff), e più ancora da SciPy (scipy.optimize.[whatever]scipy.signal.[whatever], scipy.stats.[whatever])

+0

Ok miei uscite di codice modificate: import ArcPy importazione SciPy da scipy.stats importare curtosi input_Raster = arcpy.Raster (nome file) arr = arcpy.RasterToNumPyArray (input_Raster) x = arr scipy.stats.kurtosis (x, axis = 0, fisher = True, bias = True) stampa 'Kurtosis =', kurtosis (x) – Student2014

+0

Kurtosis = [-0.09035063 -0.07390738 -0.14783502 ..., 4.14966822 3.81233072 2.9377284] – Student2014

+0

Non sicuro se è corretto? Grazie mille per la direzione - penso di aver bisogno di leggere di più sulla kurtosi! – Student2014

Problemi correlati