<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def combine_with(self, rgbd_im):
 """ Replaces all zeros in the source rgbd image with the values of a different rgbd image Parameters rgbd_im : :obj:`RgbdImage` rgbd image to combine with Returns ------- :obj:`RgbdImage` the combined rgbd image """

        new_data = self.data.copy()
        depth_data = self.depth.data
        other_depth_data = rgbd_im.depth.data
        depth_zero_px = self.depth.zero_pixels()
        depth_replace_px = np.where(
            (other_depth_data != 0) & (
                other_depth_data < depth_data))
        depth_replace_px = np.c_[depth_replace_px[0], depth_replace_px[1]]

        # replace zero pixels
        new_data[depth_zero_px[:, 0], depth_zero_px[:, 1],
                 :] = rgbd_im.data[depth_zero_px[:, 0], depth_zero_px[:, 1], :]

        # take closest pixel
        new_data[depth_replace_px[:, 0], depth_replace_px[:, 1],
                 :] = rgbd_im.data[depth_replace_px[:, 0], depth_replace_px[:, 1], :]

        return RgbdImage(new_data, frame=self.frame)