Can I use numpy to load a tiff file as a dictionary-like object?

41 Views Asked by At

I want to load a tif file as a dictionary-like object.

Attempt 1:

import os
import numpy as np

with np.load(os.path.join(data_dir, 'abc.tif')) as data:
    X_test = data['X']
    y_test = data['y']

Traceback for attempt 1:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [8], in <cell line: 1>()
----> 1 with np.load(os.path.join(data_dir, 'abc.tif')) as data:
      2     X_test = data['X']
      3     y_test = data['y']

File /scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/numpy/lib/npyio.py:438, in load(file, mmap_mode, allow_pickle, fix_imports, encoding, max_header_size)
    435 else:
    436     # Try a pickle
    437     if not allow_pickle:
--> 438         raise ValueError("Cannot load file containing pickled data "
    439                          "when allow_pickle=False")
    440     try:
    441         return pickle.load(fid, **pickle_kwargs)

ValueError: Cannot load file containing pickled data when allow_pickle=False

Attempt 2:

with np.load(os.path.join(data_dir, 'abc.tif'), allow_pickle=True) as data:
    X_test = data['X']
    y_test = data['y']

Traceback for attempt 2:

---------------------------------------------------------------------------
UnpicklingError                           Traceback (most recent call last)
File /scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/numpy/lib/npyio.py:441, in load(file, mmap_mode, allow_pickle, fix_imports, encoding, max_header_size)
    440 try:
--> 441     return pickle.load(fid, **pickle_kwargs)
    442 except Exception as e:

UnpicklingError: invalid load key, '*'.

The above exception was the direct cause of the following exception:

UnpicklingError                           Traceback (most recent call last)
Input In [9], in <cell line: 1>()
----> 1 with np.load(os.path.join(data_dir, 'abc.tif'), allow_pickle=True) as data:
      2     X_test = data['X']
      3     y_test = data['y']

File /scg/apps/software/jupyter/python_3.9/lib/python3.9/site-packages/numpy/lib/npyio.py:443, in load(file, mmap_mode, allow_pickle, fix_imports, encoding, max_header_size)
    441     return pickle.load(fid, **pickle_kwargs)
    442 except Exception as e:
--> 443     raise pickle.UnpicklingError(
    444         f"Failed to interpret file {file!r} as a pickle") from e

UnpicklingError: Failed to interpret file 'abc.tif' as a pickle
0

There are 0 best solutions below