# pyvista.PolyData.faces#

property PolyData.faces: NumpyArray[int][source]#

Return the connectivity array of the faces of this PolyData.

The faces array is organized as:

```[n0, p0_0, p0_1, ..., p0_n, n1, p1_0, p1_1, ..., p1_n, ...]
```

where `n0` is the number of points in face 0, and `pX_Y` is the Y’th point in face X.

For example, a triangle and a quadrilateral might be represented as:

```[3, 0, 1, 2, 4, 0, 1, 3, 4]
```

Where the two individual faces would be `[3, 0, 1, 2]` and `[4, 0, 1, 3, 4]`.

Faces can also be set by assigning a `pyvista.CellArray` object instead of an array.

Returns:
`numpy.ndarray`

Array of face connectivity.

Notes

The array returned cannot be modified in place and will raise a `ValueError` if attempted.

You can, however, set the faces directly. See the example.

Examples

```>>> import pyvista as pv
>>> plane = pv.Plane(i_resolution=2, j_resolution=2)
>>> plane.faces
array([4, 0, 1, 4, 3, 4, 1, 2, 5, 4, 4, 3, 4, 7, 6, 4, 4, 5, 8, 7])
```

Note how the faces contain a “padding” indicating the number of points per face:

```>>> plane.faces.reshape(-1, 5)
array([[4, 0, 1, 4, 3],
[4, 1, 2, 5, 4],
[4, 3, 4, 7, 6],
[4, 4, 5, 8, 7]])
```

Set the faces directly. The following example creates a simple plane with a single square faces and modifies it to have two triangles instead.

```>>> mesh = pv.Plane(i_resolution=1, j_resolution=1)
>>> mesh.faces = [3, 0, 1, 2, 3, 3, 2, 1]
>>> mesh.faces
array([3, 0, 1, 2, 3, 3, 2, 1])
```