Numpy: О втором правиле numpy.ufunc.reduceat?
Из документов - v1.14 второе правило
- если индексы [i] >= индексы [i + 1], i-я обобщенная "строка" - это просто [indices[i]].
Так как это будет использоваться? Есть ли реальный пример?
Я имел в виду, что должны быть (?) Некоторые реальные ситуации, которые соответствуют тому, что делает это правило, тогда мы определили правило, чтобы соответствовать им, так что же это за ситуация?
1 ответ
Первые 2 примера используют это правило.
Во втором примере, массив 2d, он явно показывает, что [0, 3, 1, 2, 0]
производит
# [row1 + row2 + row3] 0:3
# [row4] 3
# [row2] 1:2
# [row3] 2
# [row1 + row2 + row3 + row4] 0:end
В первом примере это правило частично скрыто индексированием [:: 2].
Без этого:
In [183]: np.add.reduceat(np.arange(8),[0,4, 1,5, 2,6, 3,7])
Out[183]: array([ 6, 4, 10, 5, 14, 6, 18, 7])
Есть [0:4] сумма, [4], [1,5] сумма, [5], [2:6] сумма, [6], [3:7] сумма, 7
Выбирая только нечетные результаты, мы получаем 4 суммы диапазона:
In [184]: _[::2]
Out[184]: array([ 6, 10, 14, 18])
In [187]: [np.arange(0,4).sum(),np.arange(1,5).sum(),np.arange(2,6).sum()]
Out[187]: [6, 10, 14]