У меня есть простой вопрос, который, кажется, не способен обернуть мою голову. У меня есть 3D-массив (стек изображений), и я пытаюсь сделать проекцию на 2D-массив (например, максимальная проекция интенсивности для стека изображений). Для этого у меня есть матрица индексов, которая указывает на использование z-стека для каждого пикселя.Выбор записей массива на основе значений 2D-матрицы
К примеру, у меня есть 3D-массив, который выглядит следующим образом:
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
И в «матрице выбора», который выглядит следующим образом:
[,1] [,2]
[1,] 1 1
[2,] 2 2
Результат этого выбора должен затем быть
[,1] [,2]
[1,] 1 3
[2,] 6 8
ie означает, что матрица указывает, из каких «z-столбцов» массива извлекается значение s.
Я знаю, что это должна быть глупая простая вещь, но я рисую пробел о том, как это сделать. Заранее спасибо!
Это работает 't (sapply (1: nrow (m), function (i) ar [,, i] [cbind (m [i,], 1: 2)]))' (предполагая 'ar' ваш массив и 'm' является матрицей выбора) –