Source code for cwatm.management_modules.replace_pcr

# -------------------------------------------------------------------------
# Name:        replace_pcr
# Purpose:     Replace pc raster command with numpy array commands
#
# Author:      PB
#
# Created:     2/08/2016
# Copyright:   (c) PB 2016
# -------------------------------------------------------------------------

import numpy as np

# ------------------------ all this area commands
#              np.take(np.bincount(AreaID,weights=Values),AreaID)     #     areasum
#                (np.bincount(b, a) / np.bincount(b))[b]              # areaaverage
#              np.take(np.bincount(AreaID,weights=Values),AreaID)     # areaaverage
#                valueMax = np.zeros(AreaID.max() + 1)
#                np.maximum.at(valueMax, AreaID, Values)
#                max = np.take(valueMax, AreaID)             # areamax


[docs]def npareatotal(values, areaclass): """ numpy area total procedure :param values: :param areaclass: :return: calculates the total area of a class """ return np.take(np.bincount(areaclass,weights=values),areaclass)
[docs]def npareaaverage(values, areaclass): """ numpy area average procedure :param values: :param areaclass: :return: calculates the average area of a class """ with np.errstate(invalid='ignore', divide='ignore'): return np.take(np.bincount(areaclass,weights=values)/ np.bincount(areaclass) ,areaclass)
[docs]def npareamaximum(values, areaclass): """ numpy area maximum procedure :param values: :param areaclass: :return: calculates the maximum of an area of a class """ valueMax = np.zeros(areaclass.max() + 1) np.maximum.at(valueMax, areaclass, values) return np.take(valueMax ,areaclass)
[docs]def npareamajority(values, areaclass): """ numpy area majority procedure :param values: :param areaclass: :return: calculates the majority of an area of a class """ uni,ind = np.unique(areaclass,return_inverse=True) return np.array([np.argmax(np.bincount(values[areaclass == group])) for group in uni])[ind]