one_hot¶
- metatensor.one_hot(labels: Labels, dimension: Labels)[source]¶
Generates one-hot encoding from a Labels object.
This function takes two
Labels
objects as inputs. The first is the one to be converted to one-hot-encoded format, and the second contains the name of the label to be extracted and all possible values of the one-hot encoding.- Parameters:
labels (Labels) – A
Labels
object from which one label will be extracted and transformed into a one-hot-encoded array.dimension (Labels) – A
Labels
object that contains a single dimension. The name of this label is the same that will be selected fromlabels
, and its values correspond to all possible values that the label can take.
- Returns:
A two-dimensional
numpy.ndarray
ortorch.Tensor
containing the one-hot encoding along the selected dimension: its first dimension matches the one inlabels
, while the second contains 1 at the position corresponding to the original label and 0 everywhere else
>>> import numpy as np >>> import metatensor >>> from metatensor import Labels
>>> # Let's say we have 6 atoms, whose chemical identities >>> # are C, H, H, H, C, H: >>> original_labels = Labels( ... names=["atom", "types"], ... values=np.array([[0, 6], [1, 1], [2, 1], [3, 1], [4, 6], [5, 1]]), ... ) >>> # Set up a Labels object with all possible elements, >>> # including, for example, also O: >>> possible_labels = Labels(names=["types"], values=np.array([[1], [6], [8]])) >>> # Get the one-hot encoded labels: >>> one_hot_encoding = metatensor.one_hot(original_labels, possible_labels) >>> print(one_hot_encoding) [[0 1 0] [1 0 0] [1 0 0] [1 0 0] [0 1 0] [1 0 0]]