Имея массив A с формой (2,6, 60)
, можно ли индексировать его на основе двоичного массива B формы (6,)
?
6 и 60 совершенно произвольны, они просто2D-данные, к которым я хочу получить доступ.
Основная задача, которую я пытаюсь сделать, - это рассчитать два варианта 2D-данных (в данном случае (6,60)
) и затем эффективно выбрать те, которые имеют наименьшую общую сумму- отсюда бинарный массив (6,)
.
Пример: для B = [1,0,1,0,1,0]
то, что я хочу получить, равно суммированию
A[1,0,:]
A[0,1,:]
A[1,2,:]
A[0,3,:]
A[1,4,:]
A[0,5,:]
, но я хотел бы сделать это путем прямой индексации, а не цикла for.
Я попытался A[B], A[:,B,:], A[B,:,:] A[:,:,B]
, но ни один из них не дал желаемой (6,60) матрицы.
import numpy as np
A = np.array([[4, 4, 4, 4, 4, 4], [1, 1, 1, 1, 1, 1]])
A = np.atleast_3d(A)
A = np.tile(A, (1,1,60)
B = np.array([1, 0, 1, 0, 1, 0])
A[B]
Ожидаемые результаты - массив (6,60)
, содержащий элементы из A, как описано выше,получено либо (2,6,60)
, либо (6,6,60)
.
Заранее спасибо, Линус