Enums#

policyengine_core.enums (renamed from .indexed_enums) contains definitions for enumerable types, which can be used to specify categorical data types.

Enum#

class policyengine_core.enums.enum.Enum(value)[source]#

Bases: Enum

Enum based on enum34, whose items have an index.

classmethod encode(array: Union[EnumArray, int64, float64, object_]) EnumArray[source]#

Encode a string numpy array, an enum item numpy array, or an int numpy array into an EnumArray. See EnumArray.decode for decoding.

Parameters:

array (numpy.ndarray) – Array of string identifiers, or of enum items, to encode.

Returns:

An EnumArray encoding the input array values.

Return type:

EnumArray

For instance:

>>> string_identifier_array = asarray(['free_lodger', 'owner'])
>>> encoded_array = HousingOccupancyStatus.encode(string_identifier_array)
>>> encoded_array[0]
2  # Encoded value
>>> free_lodger = HousingOccupancyStatus.free_lodger
>>> owner = HousingOccupancyStatus.owner
>>> enum_item_array = asarray([free_lodger, owner])
>>> encoded_array = HousingOccupancyStatus.encode(enum_item_array)
>>> encoded_array[0]
2  # Encoded value

EnumArray#

class policyengine_core.enums.enum_array.EnumArray(input_array: numpy.int_, possible_values: Optional[Type[Enum]] = None)[source]#

Bases: ndarray

Numpy array subclass representing an array of enum items.

EnumArrays are encoded as int arrays to improve performance

decode() object_[source]#

Return the array of enum items corresponding to self.

For instance:

>>> enum_array = household('housing_occupancy_status', period)
>>> enum_array[0]
>>> 2  # Encoded value
>>> enum_array.decode()[0]
<HousingOccupancyStatus.free_lodger: 'Free lodger'>

Decoded value: enum item

decode_to_str() str_[source]#

Return the array of string identifiers corresponding to self.

For instance:

>>> enum_array = household('housing_occupancy_status', period)
>>> enum_array[0]
>>> 2  # Encoded value
>>> enum_array.decode_to_str()[0]
'free_lodger'  # String identifier