meshgrid

compas.itertools.meshgrid(x, y, indexing='xy')[source]

Construct coordinate matrices from two coordinate vectors.

Parameters:
xlist[float]

The values of the “x axis” of the grid.

ylist[float]

The values of the “y axis” of the grid.

indexingLiteral[‘xy’, ‘ij’], optional

The indexing strategy determines the structure of the output.

Returns:
list[list[float]]

The X values of the coordinate grid.

list[list[float]]

The Y values of the coordinate grid.

Notes

The output of this function consists of two “matrices”, X and Y. The structure of the matrices is determined by the choice of indexing. Assuming m = len(x) and n = len(y). If indexing is 'xy', the shape of both matrices is (n, m), with X containing the elements of x in its rows, and Y the elements of y in its columns. If indexing is 'ij', the shape of both matrices is (m, n), with X containing the elements of x in its columns, and Y the elements of y in its rows.

References

This function mimicks the functionality of numpy.meshgrid [1], but in a simpler form.

Examples

>>> from compas.itertools import linspace, meshgrid
>>> x = list(linspace(0, 1, 3))
>>> y = list(linspace(0, 1, 2))
>>> X, Y = meshgrid(x, y)
>>> X
[[0.0, 0.5, 1.0], [0.0, 0.5, 1.0]]
>>> Y
[[0.0, 0.0, 0.0], [1.0, 1.0, 1.0]]
>>> X, Y = meshgrid(x, y, "ij")
>>> X
[[0.0, 0.0], [0.5, 0.5], [1.0, 1.0]]
>>> Y
[[0.0, 1.0], [0.0, 1.0], [0.0, 1.0]]