code: def get_chunks(data, chunks=None):
      
  
      if chunks is None:
  
          if hasattr(data, 'chunklen') and hasattr(data, 'shape'):
              # bcolz carray, chunk first dimension only
              return (data.chunklen,) + data.shape[1:]
  
          elif hasattr(data, 'chunks') and hasattr(data, 'shape') and \
                  len(data.chunks) == len(data.shape):
              # h5py dataset or zarr array
              return data.chunks
  
          else:
              # fall back to something simple, ~4Mb chunks of first dimension
              row = np.asarray(data[0])
              chunklen = max(1, (2**22) // row.nbytes)
              if row.shape:
                  chunks = (chunklen,) + row.shape
              else:
                  chunks = (chunklen,)
              return chunks
  
      else:
  
          return chunks
docs: Try to guess a reasonable chunk shape to use for block-wise
      algorithms operating over `data`.