matrices

This module contains all functions related to matrices.

class ColumnView(matrix)

Bases: Mapping[Any, CommensurableValues[S]], Generic[S]

This class defines a view of a value matrix per column.

Parameters

matrix (IValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class IAdjacencyMatrix(data, vertices=None, **kwargs)

Bases: IMatrix, ABC

This class implements graphs as an adjacency matrix.

The adjacency matrix is represented internally by a pandas.DataFrame with vertices as the indexes and columns.

Parameters
  • data – adjacency matrix in an array-like or dict-structure

  • vertices (Union[List, None]) –

Raises

KeyError

  • if columns and rows have different sets of labels

  • if some vertices are duplicated

Note

the cells of the matrix can be of any type (not just numerics)

property cell: Mapping[Tuple[Any, Any], Any]

Return matrix cell accessor.

Note

actually returns DataFrame.at() from data

property columns: List

Return column labels.

property rows: List

Return row labels.

property vertices: List

Return list of vertices

class IMatrix(data, **kwargs)

Bases: ABC

This class implements a wrapper on pandas.DataFrame.

It adds a method to check if two such objects are equals. It is meant to be use for any class that needs a DataFrame as its internal data representation in this package.

Parameters

data – dataframe containing the matrix

Raises

KeyError

  • if some indexes are duplicated

  • if some columns are duplicated

property cell: Mapping[Tuple[Any, Any], Any]

Return matrix cell accessor.

Note

actually returns DataFrame.at() from data

property columns: List

Return column labels.

property rows: List

Return row labels.

class IValueMatrix(data, scales=None, stype=None, **kwargs)

Bases: IMatrix, Generic[S], ABC

This class defines a matrix with associated scales (one per column).

Parameters
  • data

  • scales (Union[S, Mapping[Any, S], None]) – data scale(s) (one per column or one shared, will be inferred from data if absent using Scale.fit())

  • stype (Union[Type[S], None]) – scales type used

Raises
  • KeyError

    • if some indexes are duplicated

    • if some columns are duplicated

  • TypeError – if stype and scales types mismatch

Todo

remove this class completely, put its code in current subclasses

property bounds: Mapping[Any, S]

Return scales inferred from values.

property cell: Mapping[Tuple[Any, Any], Any]

Return matrix cell accessor.

Note

actually returns DataFrame.at() from data

property columns: List

Return column labels.

property columns_values: Mapping[Any, CommensurableValues[S]]

Iterator on the table criteria values

copy()

Return a copy of the object

Return type

Self

property is_numeric: bool

Check whether table is numeric.

Returns

Return type

bool

property is_ordinal: bool

Check whether scales are all ordinal.

Returns

property is_within_scales: bool

Check whether all values are within their respective scales.

Returns

property rows: List

Return row labels.

property rows_values: Mapping[Any, Values[S]]

Iterator on the table alternatives values

sum(axis: None = None) float
sum(axis: Literal[0, 1]) CommensurableValues[QuantitativeScale]

Return the sum of the data (all table, row or column-wise).

Parameters

axis

  • 0: column-wise sum

  • 1: row-wise sum

  • None: complete sum

Returns

Warning

it will raise a TypeError if data contains numeric and non-numeric values

abstract property to_numeric: IValueMatrix[QuantitativeScale]

Return numeric conversion of ordinal values.

Raises

TypeError – if scales are not ordinal

property union_bounds: S

Return one scale for whole matrix inferred from values.

property within_scales: DataFrame

Return a dataframe indicating which values are within their respective scale.

Returns

OutrankingMatrix

This type alias represents an outranking matrix

alias of AdjacencyValueMatrix[DiscreteQuantitativeScale]

class PartialColumnView(matrix)

Bases: Mapping[Any, PerformanceTable[S]], Generic[S]

This class defines a view of a partial value matrix per column.

Parameters

matrix (PartialValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class PartialCriterionView(matrix)

Bases: Mapping[Any, AdjacencyValueMatrix[S]], Generic[S]

This class defines a view of a partial value matrix per criterion.

Parameters

matrix (PartialValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class PartialRowView(matrix)

Bases: Mapping[Any, PerformanceTable[S]], Generic[S]

This class defines a view of a partial value matrix per row.

Parameters

matrix (PartialValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class RowView(matrix)

Bases: Mapping[Any, Values[S]], Generic[S]

This class defines a view of a value matrix per row.

Parameters

matrix (IValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class VertexColumnView(matrix)

Bases: ColumnView[S], Generic[S]

This class defines a view of an adjacency value matrix per column.

Parameters

matrix (AdjacencyValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
class VertexRowView(matrix)

Bases: Mapping[Any, CommensurableValues[S]], Generic[S]

This class defines a view of an adjacency value matrix per row.

Parameters

matrix (AdjacencyValueMatrix[S]) –

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
values() an object providing a view on D's values
create_outranking_matrix(data, vertices=None, **kwargs)

Create an outranking matrix.

Parameters
  • data – adjacency matrix in an array-like or dict-structure

  • vertices (Optional[List]) –

Raises
  • KeyError

    • if columns and rows have different sets of labels

    • if some vertices are duplicated

  • TypeError – if data is not binary

Return type

AdjacencyValueMatrix[DiscreteQuantitativeScale]

Note

This function is just an easier way to create AdjacencyValueMatrix with binary scale

dataframe_equals(df1, df2)

Check if two dataframes have the same values.

It will realign the indexes and columns if they are ordered differently.

Parameters
  • df1 (DataFrame) –

  • df2 (DataFrame) –

Returns

Return type

bool

Todo

integrate into mcda/core.adjacency_matrix.Matrix

requires_graphviz(func)

Wrap a class or function that requires graphviz to function.

Parameters

obj – either a class or function

Raises

ImportError – if graphviz is not installed

Returns

wrapped class or function