samedi 10 novembre 2018

python - replace multiple if elif statements and conditions with numpy function such as numpy.where

Radio_index, n_x and n_y are integers I wrote a if/elif code that can be run. Am I able to do with np.where

def radio_index2xy(radio_index,n_x,n_y): 

    con1 = radio_index <= n_x
    con2 = (radio_index > n_x) & (radio_index <= n_x+n_y-1)
    con3 = (radio_index > n_x+n_y-1) & (radio_index <= 2*n_x+n_y-2)
    con4 = (radio_index > 2*n_x+n_y-2) & (radio_index <= 2*n_x+2*n_y-4)
    condlist = [[con1],[con2],[con3],[con4]]
    choicelist = [[x_pos = radio_index -1 ,y_pos = 0],\
                  [(x_pos = n_x -1),(y_pos = radio_index - n_x)],\
                  [(x_pos = (n_x-1)-(radio_index-n_x-n_y+1)),(y_pos = n_y -1)],\
                  [(x_pos = 0),(y_pos = 2*n_x+2*n_y-4-radio_index+1)]]
    np.select(condlist,choicelist)

    return x_pos,y_pos 

Aucun commentaire:

Enregistrer un commentaire