rowsum
добавляет все строки, которые имеют одинаковое значение группы. Давайте возьмем более простой пример.
m <- cbind(1:4, 5:8)
m
## [,1] [,2]
## [1,] 1 5
## [2,] 2 6
## [3,] 3 7
## [4,] 4 8
group <- c(1, 1, 2, 2)
rowsum(m, group)
## [,1] [,2]
## 1 3 11
## 2 7 15
Поскольку первые две строки соответствуют группе 1, а последние 2 строки - группе 2, он суммирует первые две строки, дающие первую строку выходных данных, и суммирует последние 2 строки, дающие вторую строку выходных данных. .
rbind(`1` = m[1, ] + m[2, ], `2` = m[3, ] + m[4, ])
## [,1] [,2]
## 1 3 11
## 2 7 15
То есть 3 формируется путем сложения 1 из строки 1 m и 2 из строки 2 m. 11 формируется путем добавления 5 из строки 1 м и 6 из строки 2 м.
7 и 15 сформированы аналогично.
На самом деле Guido наложил вето на идею: http://bugs.python.org/issue1093
, Но, как отмечено в той проблеме, можно сделать одну довольно легко:
from functools import reduce # Valid in Python 2.6+, required in Python 3
import operator
reduce(operator.mul, (3, 4, 5), 1)
Нет встроенного того, но это просто к самокрутке, как продемонстрировано здесь :
import operator
def prod(factors):
return reduce(operator.mul, factors, 1)
См. ответы на этот вопрос:
, Какой модуль Python подходит для манипулирования данными в списке?
Numeric.product
(или
reduce(lambda x,y:x*y,[3,4,5])
)
Используйте это
def prod(iterable):
p = 1
for n in iterable:
p *= n
return p
, Так как нет никакого встроенного prod
функция.