docs: def normalize_attr_array(a: Any) -> np.ndarray:
  	"""
  	Take all kinds of array-like inputs and normalize to a one-dimensional np.ndarray
  	"""
  	if type(a) is np.ndarray:
  		return a
  	elif type(a) is np.matrix:
  		if a.shape[0] == 1:
  			return np.array(a)[0, :]
  		elif a.shape[1] == 1:
  			return np.array(a)[:, 0]
  		else:
  			raise ValueError("Attribute values must be 1-dimensional.")
  	elif type(a) is list or type(a) is tuple:
  		return np.array(a)
  	elif sparse.issparse(a):
  		return normalize_attr_array(a.todense())
  	else:
  		raise ValueError("Argument must be a list, tuple, numpy matrix, numpy ndarray or sparse matrix.")