Я думаю, что то, что я пытаюсь сделать, лучше всего иллюстрируется на этом примере взятия массивов a
и b
и выдачи expected
:
>>> a = np.array([ [ [0,0,0], [0,0,0] ], [ [0,0,0], [0,0,0] ] ])
>>> a
array([[[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0]]])
>>> a.shape
(2, 2, 3)
>>> b = np.array([ [3, 7], [9, 8] ])
>>> b
array([[3, 7],
[9, 8]])
>>> b.shape
(2, 2)
>>> expected = np.array([ [ [3,0,0], [7,0,0] ], [ [9,0,0], [8,0,0] ] ])
>>> expected
array([[[3, 0, 0],
[7, 0, 0]],
[[9, 0, 0],
[8, 0, 0]]])
По существу, для каждой позиции в массиве a
по оси 1
, я хочу посетить эту позицию и работать с ней, основываясь на соответствующем значении в массиве b
(также по оси 1
).
В этом примере функция для каждогоПосещаемая позиция может выглядеть следующим образом:
def _operate(a_val, b_val):
return a_val + np.array([b_val, 0, 0])
(Это всего лишь пример, и я могу захотеть заняться другими делами внутри _operate
, но, допустим, самое большее, я бы добавил значение из bк одному из полей в.)
есть ли идеальный / правильный способ сделать это в NumPy.Спасибо!