ray.data.Dataset.filter#

Dataset.filter(fn: Callable[[Dict[str, Any]], bool] | Callable[[Dict[str, Any]], Iterator[bool]] | _CallableClassProtocol, *, compute: str | ComputeStrategy = None, concurrency: int | Tuple[int, int] | None = None, ray_remote_args_fn: Callable[[], Dict[str, Any]] | None = None, **ray_remote_args) Dataset[源代码]#

过滤掉不满足给定谓词的行。

你可以使用一个函数或一个可调用的类来执行转换。对于函数,Ray Data 使用无状态的 Ray 任务。对于类,Ray Data 使用有状态的 Ray 角色。更多信息请参见 有状态转换

小技巧

如果你可以用 NumPy 或 pandas 操作来表示你的谓词,Dataset.map_batches() 可能会更快。你可以通过删除行来实现过滤。

示例

>>> import ray
>>> ds = ray.data.range(100)
>>> ds.filter(lambda row: row["id"] % 2 == 0).take_all()
[{'id': 0}, {'id': 2}, {'id': 4}, ...]

时间复杂度:O(数据集大小 / 并行度)

参数:
  • fn – 应用于每一行的谓词,或可以实例化以创建此类可调用对象的类类型。

  • compute – 此参数已弃用。请使用 concurrency 参数。

  • concurrency – 要同时使用的 Ray 工作者的数量。对于一个固定大小的工作者池,大小为 n,指定 concurrency=n。对于一个从 mn 工作者的自动扩展工作者池,指定 concurrency=(m, n)

  • ray_remote_args_fn – 一个返回传递给每个映射工作者的远程参数字典的函数。此参数的目的是为每个执行者/任务生成动态参数,并且将在每次初始化工作者之前被调用。从此字典返回的参数将始终覆盖 ray_remote_args 中的参数。注意:这是一个高级的、实验性的功能。

  • ray_remote_args – 从ray请求的额外资源需求(例如,num_gpus=1 用于为map任务请求GPU)。