I am trying to make a function where if the last value of order
is 1 then the code will append 1 to orders
and then append the number 20 to the value
array as well. If the last value is 0 in order
then it will append 1 to order
and append the number 15 to value
.
import numpy as np order = np.array([0,1,0,0,0]) order1 = np.array([0,1,0,0,1]) value= np.array([10,55,30,3,10])
Expected Output:
#if last element is equal to 1 order = np.array([0,1,0,0,0,1]) value= np.array([10,55,30,3,10,20]) #if last element is equal to 0 order1 = np.array([0,1,0,0,1,0]) value= np.array([10,55,30,3,10,15])
Advertisement
Answer
def extend_order_and_value(order, value, order_0_extensors = (1, 20), order_1_extensors = (0, 15)): ## Return order and value extended by the values given in ## order_0_extensors or order_1_extensors depending on last order's value. ## the extensors have the form: (order_value, values_value) for the cases ## 0 or 1 as last value in order. # ensure that order and value are numpy arrays! order, value = np.array(order), np.array(value) if order[-1] == 0: order_val, value_val = order_0_extensors elif order[-1] == 1: order_val, values_val = order_1_extensors else: return order, value # return unchanged or raise error return np.concatenate([order, np.array([order_val])]), np.concatenate([values, np.array([values_val])])
Use it like this:
import numpy as np order = np.array([0,1,0,0,0]) order1 = np.array([0,1,0,0,1]) value= np.array([10,55,30,3,10]) new_order, new_value = extend_order_and_value(order, value) new_order ## array([0, 1, 0, 0, 0, 1]) new_value ## array([10, 55, 30, 3, 10, 20]) new_order1, new_value1 = extend_order_and_value(order1, value) new_order1 ## array([0, 1, 0, 0, 1, 0]) new_value1 ## array([10, 55, 30, 3, 10, 15]))