From the documentation it appears as though the method is designed to work in 2D only: `def regions(image, conn = CONNECTIVITY.FOUR, out_type = Dtype.f32): """ Find the connected components in the image. Parameters ---------- image : af.Array - A 2 D arrayfire array representing an image. conn : optional: af.CONNECTIVITY. default: af.CONNECTIVITY.FOUR. - Specifies the connectivity of the pixels. out_type : optional: af.Dtype. default: af.Dtype.f32. - Specifies the type for the output. Returns --------- output : af.Array - An array where each pixel is labeled with its component number. """ output = Array() safe_call(backend.get().af_regions(c_pointer(output.arr), image.arr, conn.value, out_type.value)) return output`