@staticmethod
def _calc_steps(shape):
    """Returns steps of shape.
        
        Step is used to create an 1-dim index from n-dim index like
        
        >>> steps = Array._calc_steps(shape)
        >>> one_dim_index = sum(step * i for step, i in zip(steps, n_dim_index))
        """
    steps = []
    tmp_d = 1
    for d in shape[::-1]:
        steps.append(tmp_d)
        tmp_d *= d
    steps = steps[::-1]
    return steps
