# 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`

.