flopscope.numpy.require
fnp.require(a, dtype=None, requirements=None, *, like=None)[flopscope source][numpy source]
Return an ndarray of the provided type that satisfies requirements.
Adapted from NumPy docs np.require
Return array 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
- a:array_like
The object to be converted to a type-and-requirement-satisfying array.
- dtype:data-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.
- requirements:str or sequence 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
- like:array_like, optional
Reference object to allow the creation of arrays which are not NumPy arrays. If an array-like passed in as
likesupports 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.Added in version 1.20.0.
Returns
- out:ndarray
Array with specified requirements and type if given.
See also
- we.flops.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
>>> import flopscope.numpy as fnp
>>> x = flops.arange(6).reshape(2,3)
>>> x.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False>>> y = flops.require(x, dtype=flops.float32, requirements=['A', 'O', 'W', 'F'])
>>> y.flags
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False