of
    `q_max` and `q_min` for a standard normal distribution is greater
    than 1, the dataset will be scaled down. If less than 1, the dataset
    will be scaled up.

    .. versionadded:: 0.24

Returns
-------
X_tr : {ndarray, sparse matrix} of shape (n_samples, n_features)
    The transformed data.

See Also
--------
RobustScaler : Performs centering and scaling using the Transformer API
    (e.g. as part of a preprocessing :class:`~sklearn.pipeline.Pipeline`).

Notes
-----
This implementation will refuse to center scipy.sparse matrices
since it would make them non-sparse and would potentially crash the
program with memory exhaustion problems.

Instead the caller is expected to either set explicitly
`with_centering=False` (in that case, only variance scaling will be
performed on the features of the CSR matrix) or to call `X.toarray()`
if he/she expects the materialized dense array to fit in memory.

To avoid memory copy the caller should pass a CSR matrix.

For a comparison of the different scalers, transformers, and normalizers,
see: :ref:`sphx_glr_auto_examples_preprocessing_plot_all_scaling.py`.

.. warning:: Risk of data leak

    Do not use :func:`~sklearn.preprocessing.robust_scale` unless you know
    what you are doing. A common mistake is to apply it to the entire data
    *before* splitting into training and test sets. This will bias the
    model evaluation because information would have leaked from the test
    set to the training set.
    In general, we recommend using
    :class:`~sklearn.preprocessing.RobustScaler` within a
    :ref:`Pipeline <pipeline>` in order to prevent most risks of data
    leaking: `pipe = make_pipeline(RobustScaler(), LogisticRegression())`.

Examples
--------
>>> from sklearn.preprocessing import robust_scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> robust_scale(X, axis=0)  # scale each column independently
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> robust_scale(X, axis=1)  # scale each row independently
array([[-1.5,  0. ,  0.5],
       [-1. ,  0. ,  1. ]])
r