Какова функция как сумма (), но для умножения? продукт ()?

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 сформированы аналогично.

180
задан smci 10 September 2018 в 00:47
поделиться

4 ответа

На самом деле 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)
206
ответ дан ojrac 23 November 2019 в 06:12
поделиться

Нет встроенного того, но это просто к самокрутке, как продемонстрировано здесь :

import operator
def prod(factors):
    return reduce(operator.mul, factors, 1)

См. ответы на этот вопрос:

, Какой модуль Python подходит для манипулирования данными в списке?

40
ответ дан Community 23 November 2019 в 06:12
поделиться
Numeric.product 

(или

reduce(lambda x,y:x*y,[3,4,5])

)

22
ответ дан Steve B. 23 November 2019 в 06:12
поделиться

Используйте это

def prod(iterable):
    p = 1
    for n in iterable:
        p *= n
    return p

, Так как нет никакого встроенного prod функция.

18
ответ дан wim 23 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: