@ahojnnes : `np.ascontiguousarray` has to be used because of `np.flipud` or `np.fliplr`. It turns out that slicing the first axis does not remove the C-contiguousness : 

```py
In [13]: a = np.arange(20).reshape(4,5)

In [14]: a.flags
Out[14]: 
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

In [15]: a[:,1:].flags
Out[15]: 
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

In [16]: a[1:,:].flags
Out[16]: 
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

In [17]: a[:,::-1].flags
Out[17]: 
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

```