numpy.require

numpy.require(a, dtype=None, requirements=None, *, like=None)[source]

Return an ndarray of the provided type that satisfies requirements.

This function is useful to be sure that an array with the correct flags is returned for passing to compiled code (perhaps through ctypes).

Parameters
aarray_like

The object to be converted to a type-and-requirement-satisfying array.

dtypedata-type

The required data-type. If None preserve the current dtype. If your application requires the data to be in native byteorder, include a byteorder specification as a part of the dtype specification.

requirementsstr or list of str

The requirements list can be any of the following

  • ‘F_CONTIGUOUS’ (‘F’) - ensure a Fortran-contiguous array

  • ‘C_CONTIGUOUS’ (‘C’) - ensure a C-contiguous array

  • ‘ALIGNED’ (‘A’) - ensure a data-type aligned array

  • ‘WRITEABLE’ (‘W’) - ensure a writable array

  • ‘OWNDATA’ (‘O’) - ensure an array that owns its own data

  • ‘ENSUREARRAY’, (‘E’) - ensure a base array, instead of a subclass

likearray_like

Reference object to allow the creation of arrays which are not NumPy arrays. If an array-like passed in as like supports the __array_function__ protocol, the result will be defined by it. In this case, it ensures the creation of an array object compatible with that passed in via this argument.

Note

The like keyword is an experimental feature pending on acceptance of NEP 35.

New in version 1.20.0.

Returns
outndarray

Array with specified requirements and type if given.

See also

asarray

Convert input to an ndarray.

asanyarray

Convert to an ndarray, but pass through ndarray subclasses.

ascontiguousarray

Convert input to a contiguous array.

asfortranarray

Convert input to an ndarray with column-major memory order.

ndarray.flags

Information about the memory layout of the array.

Notes

The returned array will be guaranteed to have the listed requirements by making a copy if needed.

Examples

>>> x = np.arange(6).reshape(2,3)
>>> x.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
>>> y = np.require(x, dtype=np.float32, requirements=['A', 'O', 'W', 'F'])
>>> y.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False