| 6500 | ) |
| 6501 | class TestReduce3D(TestReduce): |
| 6502 | def test_argmin_dim( |
| 6503 | self, |
| 6504 | x: np.ndarray, |
| 6505 | minindices_x: dict[str, np.ndarray], |
| 6506 | minindices_y: dict[str, np.ndarray], |
| 6507 | minindices_z: dict[str, np.ndarray], |
| 6508 | minindices_xy: dict[str, np.ndarray], |
| 6509 | minindices_xz: dict[str, np.ndarray], |
| 6510 | minindices_yz: dict[str, np.ndarray], |
| 6511 | minindices_xyz: dict[str, np.ndarray], |
| 6512 | maxindices_x: dict[str, np.ndarray], |
| 6513 | maxindices_y: dict[str, np.ndarray], |
| 6514 | maxindices_z: dict[str, np.ndarray], |
| 6515 | maxindices_xy: dict[str, np.ndarray], |
| 6516 | maxindices_xz: dict[str, np.ndarray], |
| 6517 | maxindices_yz: dict[str, np.ndarray], |
| 6518 | maxindices_xyz: dict[str, np.ndarray], |
| 6519 | nanindices_x: dict[str, np.ndarray], |
| 6520 | nanindices_y: dict[str, np.ndarray], |
| 6521 | nanindices_z: dict[str, np.ndarray], |
| 6522 | nanindices_xy: dict[str, np.ndarray], |
| 6523 | nanindices_xz: dict[str, np.ndarray], |
| 6524 | nanindices_yz: dict[str, np.ndarray], |
| 6525 | nanindices_xyz: dict[str, np.ndarray], |
| 6526 | ) -> None: |
| 6527 | ar = xr.DataArray( |
| 6528 | x, |
| 6529 | dims=["x", "y", "z"], |
| 6530 | coords={ |
| 6531 | "x": np.arange(x.shape[0]) * 4, |
| 6532 | "y": 1 - np.arange(x.shape[1]), |
| 6533 | "z": 2 + 3 * np.arange(x.shape[2]), |
| 6534 | }, |
| 6535 | attrs=self.attrs, |
| 6536 | ) |
| 6537 | |
| 6538 | for inds in [ |
| 6539 | minindices_x, |
| 6540 | minindices_y, |
| 6541 | minindices_z, |
| 6542 | minindices_xy, |
| 6543 | minindices_xz, |
| 6544 | minindices_yz, |
| 6545 | minindices_xyz, |
| 6546 | ]: |
| 6547 | if np.array([np.isnan(i) for i in inds.values()]).any(): |
| 6548 | with pytest.raises(ValueError): |
| 6549 | ar.argmin(dim=list(inds)) |
| 6550 | return |
| 6551 | |
| 6552 | result0 = ar.argmin(dim=["x"]) |
| 6553 | assert isinstance(result0, dict) |
| 6554 | expected0 = { |
| 6555 | key: xr.DataArray(value, dims=("y", "z"), attrs=self.attrs) |
| 6556 | for key, value in minindices_x.items() |
| 6557 | } |
| 6558 | for key in expected0: |
| 6559 | assert_identical(result0[key].drop_vars(["y", "z"]), expected0[key]) |