2016-05-02 7 views
0

Что такое канонический способ суммирования трехмерного массива вдоль размера 3 (тем самым давая матрицу)?Как суммировать массив по 3-му измерению

Я знаю, что могу apply(A,c(1,2),sum), но (ошибочно или по праву). У меня создалось впечатление, что использование apply не лучше, чем использование петель for.

Возможно, я мог бы aperm массив, colSum его, затем un aperm это снова, но это было бы не очень удобочитаемо.

Есть ли лучший способ?

ответ

5

Использование rowSums. Он предлагает параметр dims, который указывает «[w], какие размеры считаются« строками »или« столбцами »для суммирования. Для строки * сумма или среднее по размеру dims + 1".

a <- array(1:16, c(2, 2, 2)) 
#, , 1 
# 
#  [,1] [,2] 
#[1,] 1 3 
#[2,] 2 4 
# 
#, , 2 
# 
#  [,1] [,2] 
#[1,] 5 7 
#[2,] 6 8 

rowSums(a, dims = 2) 
#  [,1] [,2] 
#[1,] 6 10 
#[2,] 8 12 
Смежные вопросы