Check if numpy array is contiguous?
Asked Answered
M

2

16

How can I find out if a n-dimensional numpy array Arr is contiguous in C-style or Fortran-style?

Mclean answered 12/7, 2018 at 11:12 Comment(1)
Also look at the strides.Governor
M
25

The numpy documentation states that it is possible to check whether an array is C-contiguous or Fortran-contiguous via the attribute flags:

Arr.flags['C_CONTIGUOUS']
Arr.flags['F_CONTIGUOUS']

These attributes return a boolean indicating which of the two cases is true.

Mclean answered 12/7, 2018 at 11:12 Comment(4)
Excepts it is not a function, it is actually an attribute of the numpy.ndarray object, as your reported syntax (which is correct) suggests.Parlance
@norok2, you are right! I edited the answer. Thanks!Mclean
And with some axis swapping it possible that neither will be True. And both are True for a 1d arrayGovernor
there is also numpy.ascontiguousarray which may sometimes be helpful.Beaver
T
13

You can also try the ndarray.data.contiguous member. E.g. (on my machine):

arr = np.arange(6).reshape(2, 3)

print(arr.data.contiguous)  # True
print(arr.data.c_contiguous)  # True
print(arr.data.f_contiguous)  # False

(I can't find any information re: which numpy versions support this, even on their docs. Any leads welcome in the comments!)

Tourney answered 12/2, 2020 at 21:11 Comment(1)
Note: this will not work with datetime64 arrays; you get ValueError: cannot include dtype 'M' in a bufferJuggler

© 2022 - 2024 — McMap. All rights reserved.