points(coords, y=None, z=None, indices=None, handle_nan=HandleNaN.allow, out=None, **kwargs)#

Create an array of points.


An array of coordinate tuples (2- or 3-dimensional) or, if y is provided, an array of x coordinates.

yarray_like, optional
zarray_like, optional
indicesarray_like, optional

Indices into the target array where input coordinates belong. If provided, the coords should be 2D with shape (N, 2) or (N, 3) and indices should be an array of shape (N,) with integers in increasing order. Missing indices result in a ValueError unless out is provided, in which case the original value in out is kept.

handle_nanshapely.HandleNaN or {‘allow’, ‘skip’, ‘error’}, default ‘allow’

Specifies what to do when a NaN or Inf is encountered in the coordinates:

  • ‘allow’: the geometries are created with NaN or Inf coordinates. Note that this can result in unexpected behaviour in subsequent operations, and generally it is discouraged to have non-finite coordinate values. One can use this option if you know all coordinates are finite and want to avoid the overhead of checking for this.

  • ‘skip’: if any of x, y or z values are NaN or Inf, an empty point will be created.

  • ‘error’: if any NaN or Inf is detected in the coordinates, a ValueError is raised. This option ensures that the created geometries have all finite coordinate values.

Added in version 2.1.0.

outndarray, optional

An array (with dtype object) to output the geometries into.


See NumPy ufunc docs for other keyword arguments. Ignored if indices is provided.


  • GEOS 3.10, 3.11 and 3.12 automatically converts POINT (nan nan) to POINT EMPTY.

  • GEOS 3.10 and 3.11 will transform a 3D point to 2D if its Z coordinate is NaN.

  • Usage of the y and z arguments will prevents lazy evaluation in dask. Instead provide the coordinates as an array with shape (..., 2) or (..., 3) using only the coords argument.


>>> points([[0, 1], [4, 5]]).tolist()
[<POINT (0 1)>, <POINT (4 5)>]
>>> points([0, 1, 2])
<POINT Z (0 1 2)>