man advect/compatibility/numpy
NUMPY(7)MiscellaneaNUMPY(7)
────────────────────────────────────────────────────────────────────────────────────────

NumPy

NumPy is Advect's first-class frontend, intercepted through NumPy's own protocols (__array_ufunc__, __array_function__, and constructor like= dispatch). The qualified range is NumPy 2.0-2.5. This build uses NumPy 2.5.2 against Advect's Array API 2024.12 target. Only the forms listed below are qualified.

Every listed function works in dynamic transforms. Stage/save says whether the same call can appear in a staged and serialized program. Differentiate reports user-visible derivative support. No means no derivative rule is available; n/a marks a structural or mathematically nondifferentiable operation. The nine numpy.lib.scimath rows are dynamic-only because their result dtype can depend on values.

Limits

Callable rows are conservative across their executable variants. numpy.round supports staging and serialization when decimals is omitted or zero; nonzero decimals is dynamic-only. numpy.linalg.eig and numpy.linalg.eigvals support all three lifetimes for complex input dtypes, while real input dtypes are dynamic-only.

numpy.linspace is dynamic-only when its endpoints are traced, including the two-output retstep=True form. NumPy accepts array-valued endpoints, whereas the shared Array API primitive has static scalar endpoint attributes, so those NumPy calls cannot be serialized. A constant-only call may be captured as a graph constant; that is not staged numpy.linspace support.

Functions

Function Stage/save Differentiate
numpy.all yes n/a
numpy.allclose no n/a
numpy.amax no yes
numpy.amin no yes
numpy.angle yes yes
numpy.any yes n/a
numpy.append no yes
numpy.apply_along_axis no yes
numpy.apply_over_axes no yes
numpy.arange yes n/a
numpy.argmax yes n/a
numpy.argmin yes n/a
numpy.argpartition no n/a
numpy.argsort yes n/a
numpy.argwhere no n/a
numpy.around no yes
numpy.array yes yes
numpy.array_equal no n/a
numpy.array_equiv no n/a
numpy.array_split no yes
numpy.asanyarray yes yes
numpy.asarray yes yes
numpy.astype yes yes
numpy.atleast_1d no yes
numpy.atleast_2d no yes
numpy.atleast_3d no yes
numpy.average yes yes
numpy.bincount no yes
numpy.block no yes
numpy.broadcast_arrays no yes
numpy.broadcast_to yes yes
numpy.can_cast no n/a
numpy.choose no yes
numpy.clip yes yes
numpy.column_stack no yes
numpy.common_type no n/a
numpy.compress yes yes
numpy.concatenate yes yes
numpy.convolve yes yes
numpy.copy yes yes
numpy.copyto no yes
numpy.corrcoef no yes
numpy.correlate yes yes
numpy.count_nonzero yes n/a
numpy.cov no yes
numpy.cross yes yes
numpy.cumprod yes yes
numpy.cumsum yes yes
numpy.cumulative_prod yes yes
numpy.cumulative_sum yes yes
numpy.delete no yes
numpy.diag no yes
numpy.diag_indices_from no n/a
numpy.diagflat no yes
numpy.diagonal yes yes
numpy.diff yes yes
numpy.digitize no n/a
numpy.dot yes yes
numpy.dsplit no yes
numpy.dstack no yes
numpy.ediff1d no yes
numpy.einsum no yes
numpy.empty yes n/a
numpy.empty_like yes n/a
numpy.expand_dims yes yes
numpy.extract no yes
numpy.eye yes n/a
numpy.fft.fft yes yes
numpy.fft.fft2 yes yes
numpy.fft.fftn yes yes
numpy.fft.fftshift yes yes
numpy.fft.hfft yes yes
numpy.fft.ifft yes yes
numpy.fft.ifft2 yes yes
numpy.fft.ifftn yes yes
numpy.fft.ifftshift yes yes
numpy.fft.ihfft yes yes
numpy.fft.irfft yes yes
numpy.fft.irfft2 yes yes
numpy.fft.irfftn yes yes
numpy.fft.rfft yes yes
numpy.fft.rfft2 yes yes
numpy.fft.rfftn yes yes
numpy.fill_diagonal no yes
numpy.fix no yes
numpy.flatnonzero no n/a
numpy.flip yes yes
numpy.fliplr no yes
numpy.flipud no yes
numpy.full yes yes
numpy.full_like yes yes
numpy.geomspace no yes
numpy.gradient yes yes
numpy.histogram no yes
numpy.histogram2d no yes
numpy.histogram_bin_edges no yes
numpy.histogramdd no yes
numpy.hsplit no yes
numpy.hstack no yes
numpy.i0 no yes
numpy.identity no n/a
numpy.imag yes yes
numpy.inner no yes
numpy.insert no yes
numpy.interp no yes
numpy.intersect1d no yes
numpy.isclose no n/a
numpy.iscomplex no n/a
numpy.iscomplexobj no n/a
numpy.isin no n/a
numpy.isneginf no n/a
numpy.isposinf no n/a
numpy.isreal no n/a
numpy.isrealobj no n/a
numpy.ix_ no n/a
numpy.kron no yes
numpy.lexsort no n/a
numpy.lib.scimath.arccos no yes
numpy.lib.scimath.arcsin no yes
numpy.lib.scimath.arctanh no yes
numpy.lib.scimath.log no yes
numpy.lib.scimath.log10 no yes
numpy.lib.scimath.log2 no yes
numpy.lib.scimath.logn no yes
numpy.lib.scimath.power no yes
numpy.lib.scimath.sqrt no yes
numpy.lib.stride_tricks.sliding_window_view no yes
numpy.linalg.cholesky yes yes
numpy.linalg.cond no yes
numpy.linalg.cross yes yes
numpy.linalg.det yes yes
numpy.linalg.diagonal yes yes
numpy.linalg.eig no yes
numpy.linalg.eigh yes yes
numpy.linalg.eigvals no yes
numpy.linalg.eigvalsh yes yes
numpy.linalg.inv yes yes
numpy.linalg.lstsq no yes
numpy.linalg.matmul yes yes
numpy.linalg.matrix_norm yes yes
numpy.linalg.matrix_power yes yes
numpy.linalg.matrix_rank no n/a
numpy.linalg.matrix_transpose yes yes
numpy.linalg.multi_dot no yes
numpy.linalg.norm yes yes
numpy.linalg.outer yes yes
numpy.linalg.pinv yes yes
numpy.linalg.qr yes yes
numpy.linalg.slogdet yes yes
numpy.linalg.solve yes yes
numpy.linalg.svd yes yes
numpy.linalg.svdvals yes yes
numpy.linalg.tensordot yes yes
numpy.linalg.tensorinv no yes
numpy.linalg.tensorsolve no yes
numpy.linalg.trace yes yes
numpy.linalg.vecdot yes yes
numpy.linalg.vector_norm yes yes
numpy.linspace no yes
numpy.logspace no yes
numpy.matrix_transpose yes yes
numpy.max yes yes
numpy.mean yes yes
numpy.median no yes
numpy.meshgrid no yes
numpy.min yes yes
numpy.moveaxis yes yes
numpy.nan_to_num no yes
numpy.nanargmax no n/a
numpy.nanargmin no n/a
numpy.nancumprod no yes
numpy.nancumsum no yes
numpy.nanmax yes yes
numpy.nanmean yes yes
numpy.nanmedian no yes
numpy.nanmin yes yes
numpy.nanpercentile no yes
numpy.nanprod yes yes
numpy.nanquantile no yes
numpy.nanstd yes yes
numpy.nansum yes yes
numpy.nanvar yes yes
numpy.ndim no n/a
numpy.nonzero no n/a
numpy.ones yes n/a
numpy.ones_like yes yes
numpy.outer yes yes
numpy.pad no yes
numpy.partition no yes
numpy.percentile no yes
numpy.piecewise no yes
numpy.place no yes
numpy.poly no yes
numpy.polyadd no yes
numpy.polyder no yes
numpy.polydiv no yes
numpy.polyfit no yes
numpy.polyint no yes
numpy.polymul no yes
numpy.polysub no yes
numpy.polyval no yes
numpy.prod yes yes
numpy.ptp no yes
numpy.put no yes
numpy.put_along_axis no yes
numpy.putmask no yes
numpy.quantile no yes
numpy.ravel no yes
numpy.ravel_multi_index no n/a
numpy.real yes yes
numpy.real_if_close no yes
numpy.repeat yes yes
numpy.reshape yes yes
numpy.resize no yes
numpy.result_type no n/a
numpy.roll yes yes
numpy.rollaxis no yes
numpy.roots no yes
numpy.rot90 no yes
numpy.round no yes
numpy.searchsorted yes n/a
numpy.select no yes
numpy.setdiff1d no yes
numpy.setxor1d no yes
numpy.shape no n/a
numpy.sinc no yes
numpy.size yes n/a
numpy.sort yes yes
numpy.sort_complex no yes
numpy.split no yes
numpy.squeeze yes yes
numpy.stack yes yes
numpy.std yes yes
numpy.sum yes yes
numpy.swapaxes no yes
numpy.take yes yes
numpy.take_along_axis yes yes
numpy.tensordot yes yes
numpy.tile yes yes
numpy.trace yes yes
numpy.transpose yes yes
numpy.trapezoid no yes
numpy.tri no n/a
numpy.tril yes yes
numpy.tril_indices_from no n/a
numpy.trim_zeros no yes
numpy.triu yes yes
numpy.triu_indices_from no n/a
numpy.union1d no yes
numpy.unique no n/a
numpy.unique_all no yes
numpy.unique_counts no n/a
numpy.unique_inverse no n/a
numpy.unique_values no yes
numpy.unravel_index no n/a
numpy.unstack no yes
numpy.unwrap no yes
numpy.vander no yes
numpy.var yes yes
numpy.vdot no yes
numpy.vsplit no yes
numpy.vstack no yes
numpy.where yes yes
numpy.zeros yes n/a
numpy.zeros_like yes yes

Ufunc calls

Function Stage/save Differentiate
numpy.absolute yes yes
numpy.add yes yes
numpy.arccos yes yes
numpy.arccosh yes yes
numpy.arcsin yes yes
numpy.arcsinh yes yes
numpy.arctan yes yes
numpy.arctan2 yes yes
numpy.arctanh yes yes
numpy.bitwise_and yes n/a
numpy.bitwise_or yes n/a
numpy.bitwise_xor yes n/a
numpy.cbrt no yes
numpy.ceil yes yes
numpy.conjugate yes yes
numpy.copysign yes yes
numpy.cos yes yes
numpy.cosh yes yes
numpy.deg2rad no yes
numpy.degrees no yes
numpy.divide yes yes
numpy.divmod no yes
numpy.equal yes n/a
numpy.exp yes yes
numpy.exp2 no yes
numpy.expm1 yes yes
numpy.fabs no yes
numpy.float_power no yes
numpy.floor yes yes
numpy.floor_divide yes yes
numpy.fmax no yes
numpy.fmin no yes
numpy.fmod no yes
numpy.frexp no yes
numpy.greater yes n/a
numpy.greater_equal yes n/a
numpy.heaviside yes yes
numpy.hypot yes yes
numpy.invert yes n/a
numpy.isfinite yes n/a
numpy.isinf yes n/a
numpy.isnan yes n/a
numpy.ldexp yes yes
numpy.less yes n/a
numpy.less_equal yes n/a
numpy.log yes yes
numpy.log10 yes yes
numpy.log1p yes yes
numpy.log2 yes yes
numpy.logaddexp yes yes
numpy.logaddexp2 no yes
numpy.logical_and yes n/a
numpy.logical_not yes n/a
numpy.logical_or yes n/a
numpy.logical_xor yes n/a
numpy.matmul yes yes
numpy.matvec yes yes
numpy.maximum yes yes
numpy.minimum yes yes
numpy.modf no yes
numpy.multiply yes yes
numpy.negative yes yes
numpy.nextafter yes yes
numpy.not_equal yes n/a
numpy.positive yes yes
numpy.power yes yes
numpy.rad2deg no yes
numpy.radians no yes
numpy.reciprocal yes yes
numpy.remainder yes yes
numpy.rint yes yes
numpy.sign yes yes
numpy.signbit yes n/a
numpy.sin yes yes
numpy.sinh yes yes
numpy.spacing yes yes
numpy.sqrt yes yes
numpy.square yes yes
numpy.subtract yes yes
numpy.tan yes yes
numpy.tanh yes yes
numpy.trunc yes yes
numpy.vecdot yes yes
numpy.vecmat yes yes

Supported ufunc methods

Function Stage/save Differentiate
numpy.add.accumulate yes yes
numpy.add.outer yes yes
numpy.add.reduce yes yes
numpy.arctan2.outer yes yes
numpy.bitwise_and.outer yes n/a
numpy.bitwise_or.outer yes n/a
numpy.bitwise_xor.outer yes n/a
numpy.copysign.outer yes yes
numpy.divide.outer yes yes
numpy.equal.outer yes n/a
numpy.float_power.outer no yes
numpy.floor_divide.outer yes yes
numpy.fmax.outer no yes
numpy.fmin.outer no yes
numpy.fmod.outer no yes
numpy.greater.outer yes n/a
numpy.greater_equal.outer yes n/a
numpy.heaviside.outer yes yes
numpy.hypot.outer yes yes
numpy.ldexp.outer yes yes
numpy.less.outer yes n/a
numpy.less_equal.outer yes n/a
numpy.logaddexp.outer yes yes
numpy.logaddexp2.outer no yes
numpy.logical_and.outer yes n/a
numpy.logical_or.outer yes n/a
numpy.logical_xor.outer yes n/a
numpy.maximum.outer yes yes
numpy.minimum.outer yes yes
numpy.multiply.accumulate yes yes
numpy.multiply.outer yes yes
numpy.multiply.reduce yes yes
numpy.nextafter.outer yes yes
numpy.not_equal.outer yes n/a
numpy.power.outer yes yes
numpy.remainder.outer yes yes
numpy.subtract.outer yes yes

ndarray methods

Function Stage/save Differentiate
numpy.ndarray.astype yes yes
numpy.ndarray.copy yes yes
numpy.ndarray.item yes yes
numpy.ndarray.reshape yes yes
numpy.ndarray.sum yes yes
numpy.ndarray.transpose no yes

$

[1:docs] [2:playground] $ man advect/compatibility/numpy