docs: def hstack(tup):
      '''
      hstack(x) is equivalent to numpy.hstack(x) or scipy.sparse.hstack(x) except that it works
        correctly with both sparse and dense arrays (if any inputs are dense, it converts all inputs
        to dense arrays).
      '''
      if all([sps.issparse(u) for u in tup]): return sps.hstack(tup, format=tup[0].format)
      else: return np.hstack([u.toarray() if sps.issparse(u) else u for u in tup])