pyvista.DataSetFilters.pack_labels#
- DataSetFilters.pack_labels(sort=False, scalars=None, preference='point', output_scalars=None, progress_bar=False, inplace=False)[source]#
Renumber labeled data such that labels are contiguous.
This filter renumbers scalar label data of any type with
N
labels such that the output labels are contiguous from[0, N)
. The output may optionally be sorted by label count.The output array
'packed_labels'
is added to the output by default, and is automatically set as the active scalars.- Parameters:
- sortbool, default:
False
Whether to sort the output by label count in descending order (i.e. from largest to smallest).
- scalars
str
,optional
Name of scalars to pack. Defaults to currently active scalars.
- preference
str
, default: “point” When
scalars
is specified, this is the preferred array type to search for in the dataset. Must be either'point'
or'cell'
.- output_scalars
str
,None
Name of the packed output scalars. By default, the output is saved to
'packed_labels'
.- progress_barbool, default:
False
If
True
, display a progress bar. Has no effect if VTK version is lower than 9.3.- inplacebool, default:
False
If
True
, the mesh is updated in-place.
- sortbool, default:
- Returns:
pyvista.Dataset
Dataset with packed labels.
See also
sort_labels
Similar function with
sort=True
by default.
Notes
This filter uses
vtkPackLabels
as the underlying method which requires VTK version 9.3 or higher. IfvtkPackLabels
is not available, packing is done withNumPy
instead which may be slower. For best performance, consider upgrading VTK.New in version 0.43.
Examples
Pack segmented image labels.
Load non-contiguous image labels
>>> from pyvista import examples >>> import numpy as np >>> image_labels = examples.download_frog_tissue()
Show range of labels
>>> image_labels.get_data_range() (0, 29)
Find ‘gaps’ in the labels
>>> label_numbers = np.unique(image_labels.active_scalars) >>> label_max = np.max(label_numbers) >>> missing_labels = set(range(label_max)) - set(label_numbers) >>> len(missing_labels) 4
Pack labels to remove gaps
>>> packed_labels = image_labels.pack_labels()
Show range of packed labels
>>> packed_labels.get_data_range() (0, 25)