Source code for torx.grid.shape_single_m
"""
Functionality to convert to single shapes.
If you want to shape (x, y, z) values without having to build a grid object,
you can use stack_single to perform the pivot.
"""
import xarray as xr
import numpy as np
import pandas as pd
from torx.autodoc_decorators_m import autodoc_function
[docs]
@autodoc_function
def shape_single(
x_values: np.array,
y_values: np.array,
z_values: np.array
) -> xr.DataArray:
"""Return the result of vector_to_matrix without the need of a grid."""
tricolumn_data = np.column_stack((x_values, y_values, z_values))
pd_dataframe = pd.DataFrame(tricolumn_data, columns=["x", "y", "z"])
# Makes a 2D array of indices
return xr.DataArray(
pd_dataframe.pivot_table(values="z", index="y", columns="x", dropna=False),
dims=["Z", "R"],
coords={"R": np.unique(x_values), "Z": np.unique(y_values)},
)