| 993 | |
| 994 | |
| 995 | class RandomChoice(IO): |
| 996 | _parameters = [ |
| 997 | "array", |
| 998 | "chunks", |
| 999 | "_meta", |
| 1000 | "_state", |
| 1001 | "replace", |
| 1002 | "p", |
| 1003 | "axis", |
| 1004 | "shuffle", |
| 1005 | ] |
| 1006 | _defaults = {"axis": None, "shuffle": None} |
| 1007 | _funcname = "da.random.choice-" |
| 1008 | |
| 1009 | @cached_property |
| 1010 | def chunks(self): |
| 1011 | return self.operand("chunks") |
| 1012 | |
| 1013 | @cached_property |
| 1014 | def sizes(self): |
| 1015 | return list(product(*self.chunks)) |
| 1016 | |
| 1017 | @cached_property |
| 1018 | def state_data(self): |
| 1019 | return random_state_data(len(self.sizes), self._state) |
| 1020 | |
| 1021 | @cached_property |
| 1022 | def _meta(self): |
| 1023 | return self.operands("_meta") |
| 1024 | |
| 1025 | def _layer(self) -> dict: |
| 1026 | return { |
| 1027 | k: (_choice_rs, state, self.array, size, self.replace, self.p) |
| 1028 | for k, state, size in zip(self.__dask_keys__(), self.state_data, self.sizes) |
| 1029 | } |
| 1030 | |
| 1031 | |
| 1032 | class RandomChoiceGenerator(RandomChoice): |