Numpy: построить ломтик а ля карт - PullRequest
0 голосов
/ 07 ноября 2019

Предположим, у меня есть следующее:

# in pseudo code

# function input 1
chord = [0,1,17,35,47,0]
dims = [0,1,2,4,5,6]
x_axis = 3
t_axis = 7

# what I'd like to return
np.squeeze(arr[0,1,17,:,35,47,0,:])

# function input 2
chord = [0,3,4,5,6,7]
dims = [0,2,3,4,5,6]
x_axis = 1
t_axis = 7

# desired return
np.squeeze(arr[0,:,3,4,5,6,7,:])

Как мне построить эти numpy срезы при заданном входе, чтобы я мог произвольно указать пару осей и chord координату?

1 Ответ

0 голосов
/ 07 ноября 2019

Я реализовал решение, основанное на отражениях:

def reflection_window(arr:np.ndarray,chord:list,dim0,dim1):
    var = "arr"
    bra = "["
    ket = "]"
    coord = [str(i) for int(i) in chord]
    coord.insert(dim0,':')
    coord.insert(dim1,':')
    chordstr = ','.join(coord)
    slicer = var+bra+chordstr+ket
    return eval(slicer)

Возможно, лучше остаться нативным для numpy, но, поскольку python является языком сценариев оболочки, возможно, имеет смысл обращаться с ним таким образом, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...