Source code for numpoly.array_function.tile

"""Construct an array by repeating A the number of times given by reps."""
from __future__ import annotations

import numpy
import numpy.typing
import numpoly

from ..baseclass import ndpoly, PolyLike
from ..dispatch import implements


[docs]@implements(numpy.tile) def tile(A: PolyLike, reps: numpy.typing.ArrayLike) -> ndpoly: """ Construct an array by repeating A the number of times given by reps. If `reps` has length ``d``, the result will have dimension of ``max(d, A.ndim)``. If ``A.ndim < d``, `A` is promoted to be d-dimensional by prepending new axes. So a shape (3,) array is promoted to (1, 3) for 2-D replication, or shape (1, 1, 3) for 3-D replication. If this is not the desired behavior, promote `A` to d-dimensions manually before calling this function. If ``A.ndim > d``, `reps` is promoted to `A`.ndim by pre-pending 1's to it. Thus for an `A` of shape (2, 3, 4, 5), a `reps` of (2, 2) is treated as (1, 1, 2, 2). Args: A: The input array. reps: The number of repetitions of `A` along each axis. Return: The tiled output array. Example: >>> q0 = numpoly.variable() >>> numpoly.tile(q0, 4) polynomial([q0, q0, q0, q0]) >>> poly = numpoly.polynomial([[1, q0-1], [q0**2, q0]]) >>> numpoly.tile(poly, 2) polynomial([[1, q0-1, 1, q0-1], [q0**2, q0, q0**2, q0]]) >>> numpoly.tile(poly, [2, 1]) polynomial([[1, q0-1], [q0**2, q0], [1, q0-1], [q0**2, q0]]) """ A = numpoly.aspolynomial(A) result = numpy.tile(A.values, reps=reps) return numpoly.aspolynomial(result, names=A.indeterminants)