Как транслировать разные фрагменты для каждой строки?

#python-3.x #numpy #slice #array-broadcasting #numpy-slicing

#python-3.x #numpy #фрагмент #массив-трансляция #numpy-нарезка

Вопрос:

Я работаю с 2-мерным массивом numpy и пытаюсь найти какой-то способ доступа к разным фрагментам для каждой строки. Предпочтительно использовать numpy-трансляцию таким образом, чтобы я передавал массив фрагментов следующим образом:

 A = np.array([[1,2,3,4,5],[1,4,9,16,25],[1,8,27,64,125]])
A[[2:,3:,4:]]
>>> array([[3,4,5],[16,25],[125]])
  

Я знаю, что то, что я написал выше, является фиктивным, но вы поняли суть. Я хотел бы передать массив t = [2,3,4], чтобы каждый элемент этого массива (обозначаемый через t_i) приводил к t_i: (этот элемент и двоеточие после).

Спасибо

Ответ №1:

То, что вы хотите, вероятно, невозможно с широковещательной передачей. Но понимание списка может сработать:

 np.array([a[i 2:] for i,a in enumerate(A)])
#array([array([3, 4, 5]), array([16, 25]), array([125])], dtype=object)