{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\n\ntrain = pd.read_csv('../input/understanding_cloud_organization/train.csv')\n\ndef rle2mask(rle_str, shape):\n    if isinstance(rle_str, float):\n        return np.zeros(shape, dtype=np.uint8)\n    mask = [0 for _ in range(shape[0] * shape[1])]\n    rle = [int(c) for c in rle_str.split(' ')]\n    for i0, i1 in zip(rle[::2], rle[1::2]):\n        for idx in [i for i in range(i0, i0 + i1)]:\n            mask[idx] = 1\n    mask = np.array(mask, dtype=np.uint8).reshape(shape[0], shape[1], order='F')\n    return mask\n\ndef mask2rle(pred):\n    shape = pred.shape\n    mask = np.zeros([shape[0], shape[1]], dtype=np.uint8)\n    points = np.where(pred == 1)\n    if len(points[0]) > 0:\n        mask[points[0], points[1]] = 1\n        mask = mask.reshape(-1, order='F')\n        pixels = np.concatenate([[0], mask, [0]])\n        rle = np.where(pixels[1:] != pixels[:-1])[0]\n        rle[1::2] -= rle[::2]\n    else:\n        return ''\n    return ' '.join(str(r) for r in rle)\n\n# Test RLE functions\nassert mask2rle(rle2mask(train['EncodedPixels'].iloc[0], (1400, 2100))) == train['EncodedPixels'].iloc[0]\nassert mask2rle(rle2mask('1 1', (1400, 2100))) == '1 1'\nprint('ALL DONE.')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":1}