2016-01-22 2 views
1

Julia's map и синтаксис понимания позволяют легко отображать все элементы многомерного массива.Map over slices

Есть ли аналогичная поддержка для отображения над фрагментов массива?

Как глупый пример, учитывая матрицу 3x3x100, я мог бы отобразить все 100 срезов 3x3x_. Я могу, скажем, получить определитель каждого 3х3 среза и в итоге получить массив детерминант 1x1x100.

+3

Посмотрите на «карты». Для вашего примера, 'size (A) == (3,3,100)', то что-то вроде 'mapslices (det, A, (1,2))' будет делать. –

+2

Это именно то, что я хочу, спасибо. Хочешь сделать это, чтобы ответить? В противном случае. – Benjohn

ответ

2

Посмотрите на mapslices. Для вопроса предлагаем пример с size(A)==(3,3,100). Вычисление 100 детерминант матрицы 3x3 может быть выполнено с помощью: mapslices(det,A,(1,2)).

Обратите внимание, что результирующая матрица остается 3-мерной, а squeeze может использоваться для устранения размеров 1. В примере:

squeeze(mapslices(det,A,(1,2)),(1,2)) 
+0

Это 'squeeze' отлично - это (очень красиво) ошибки, если сжатый размер не имеет размера 1. Это было бы еще более суперкомпактно, если бы« maplice »имел способ указать измерение, также должен быть зациклен ... но это очень легко построить. – Benjohn