APPEND
 
 Append a single data point to an array. The large array must be passed to the bottom "array" connection.
For ordered pair, the single point must have a shape of 1 (or (1,)).  Params:    primary_dp : OrderedPair|Vector|Scalar|Matrix|DataFrame|None  Input that ends up "on top" of the resulting DataContainer.   secondary_dp : OrderedPair|Vector|Scalar|Matrix|DataFrame  Input that ends up "on the bottom" of the resulting DataContainer.     Returns:    out : OrderedPair, Matrix, DataFrame, Vector      
   Python Code
from numpy import append
from flojoy import flojoy, OrderedPair, Matrix, DataFrame, Vector, Scalar
@flojoy
def APPEND(
    primary_dp: OrderedPair | Matrix | DataFrame | Scalar | Vector | None,
    secondary_dp: OrderedPair | Matrix | DataFrame | Scalar | Vector,
) -> OrderedPair | Matrix | DataFrame | Vector | Scalar:
    """Append a single data point to an array.
    The large array must be passed to the bottom "array" connection.
    For ordered pair, the single point must have a shape of 1 (or (1,)).
    Parameters
    ----------
    primary_dp : OrderedPair|Vector|Scalar|Matrix|DataFrame|None
        Input that ends up "on top" of the resulting DataContainer.
    secondary_dp : OrderedPair|Vector|Scalar|Matrix|DataFrame
        Input that ends up "on the bottom" of the resulting DataContainer.
    Returns
    -------
    OrderedPair, Matrix, DataFrame, Vector
    """
    if isinstance(primary_dp, OrderedPair) and isinstance(secondary_dp, OrderedPair):
        x0 = primary_dp.x
        y0 = primary_dp.y
        x1 = secondary_dp.x
        y1 = secondary_dp.y
        if y1.shape[0] != 1:
            raise ValueError(
                (
                    "To append, APPEND node the requires the non-array "
                    "input to have a single point. "
                    f"The data passed has a shape of: {y1.shape}"
                )
            )
        x = append(x0, x1)
        y = append(y0, y1)
        return OrderedPair(x=x, y=y)
    elif isinstance(primary_dp, Matrix) and isinstance(secondary_dp, Matrix):
        m0 = primary_dp.m
        m1 = secondary_dp.m
        m = append(m0, m1, axis=0)
        return Matrix(m=m)
    elif isinstance(primary_dp, Vector) and isinstance(secondary_dp, Vector):
        v0 = primary_dp.v
        v1 = secondary_dp.v
        v = append(v0, v1, axis=0)
        return Vector(v=v)
    elif isinstance(primary_dp, Vector) and isinstance(secondary_dp, Scalar):
        v0 = primary_dp.v
        v1 = secondary_dp.c
        v = append(v0, [v1], axis=0)
        return Vector(v=v)
    elif isinstance(primary_dp, Scalar) and isinstance(secondary_dp, Scalar):
        c0 = primary_dp.c
        c1 = secondary_dp.c
        v = append([c0], [c1], axis=0)
        return Vector(v=v)
    elif isinstance(primary_dp, DataFrame) and isinstance(secondary_dp, DataFrame):
        df0 = primary_dp.m
        df1 = secondary_dp.m
        df = df0._append(df1, ignore_index=True)
        return DataFrame(df=df)
    # When primary_dp is None during the first loop:
    elif primary_dp is None and isinstance(secondary_dp, Scalar):
        return secondary_dp
    elif primary_dp is None and isinstance(secondary_dp, OrderedPair):
        return secondary_dp
    else:
        raise ValueError(
            (
                "The APPEND node requires the two inputs to be the same type. "
                f"The types passed were: {type(primary_dp)} and {type(secondary_dp)}"
            )
        )
Example
Having problems with this example app? Join our Discord community and we will help you out!
In this example, LINSPACE and RAND generate an ordered pair with random y values.
This array is then passed a loop which uses the APPEND node to append a new random y value to the ordered pair.
The SCATTER node is updated each loop showing how the APPEND node works,