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。对于一个从m到n工作者的自动扩展工作者池,指定concurrency=(m, n)。ray_remote_args_fn – 一个返回传递给每个映射工作者的远程参数字典的函数。此参数的目的是为每个执行者/任务生成动态参数,并且将在每次初始化工作者之前被调用。从此字典返回的参数将始终覆盖
ray_remote_args中的参数。注意:这是一个高级的、实验性的功能。ray_remote_args – 从ray请求的额外资源需求(例如,num_gpus=1 用于为map任务请求GPU)。