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 |
$ █