hparray: An introduction¶
Motivation¶
The motivation behind the creation of this package was performing common tasks on a numpy ndarray
for
hyperspectral data which could be better served by extending the ndarray
type with added functionality for
hyperspectral data. This package provides just that, a hparray
type that subclasses
ndarray
and adds further functionality. An advantage over other packages is that it the
hparray
object can still be used as a normal numpy array for other tasks.
Processing data¶
The hyperspectral data is stored and processed using hparray
.
Note
Note that the array should be formatted in the following order:
(spatial, spectral)
i.e. the spatial dimensions should proceed the spectral dimension/channels. As an example, if our hyperspectral dataset has dimensions of x=10, y=10, z=10 and channels=100 then the array should be formatted as:
(10, 10, 10, 100)
Below is an example of instantiating a hparray
object with a 4d random numpy array.
import numpy as np
import hypers as hp
test_data = np.random.rand(40, 40, 4, 512)
X = hp.array(test_data)
Properties¶
The hparray
object has several useful attributes and methods for immediate analysis:
Note
Note that as hparray
subclasses numpy’s ndarray
, all the usual methods
and attributes in a numpy array can also be used here.
# Data properties:
X.shape # Shape of the hyperspectral array
X.ndim # Number of dimensions
X.nfeatures # Size of the spectral dimension/channels
X.nsamples # Total number of pixels (samples)
X.nspatial # Shape of the spatial dimensions
# To access the mean image/spectrum of the dataset:
X.mean_spectrum
X.mean_image
# To access the image/spectrum in a specific pixel/spectral range:
X.spectrum[10:20, 10:20, :, :] # Returns spectrum within chosen pixel range
X.image[..., 100:200] # Returns image averaged between spectral bands
# To view and interact with the data:
X.plot(backend='pyqt') # Opens a hyperspectral viewer
To view the full list of methods and attributes that the Process class contains, see
hparray
.