當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy ufunc.reduceat用法及代碼示例


本文簡要介紹 python 語言中 numpy.ufunc.reduceat 的用法。

用法:

ufunc.reduceat(array, indices, axis=0, dtype=None, out=None)

在單個軸上使用指定切片執行(局部)reduce。

對於我在range(len(indices)),reduceat計算ufunc.reduce(array[indices[i]:indices[i+1]]),它變成了i-th廣義“row”平行於在最終結果中(即,在二維數組中,例如,如果軸 = 0,它變成i-th 行,但是如果軸 = 1,它成為i-th 列)。這有三個異常:

  • i = len(indices) - 1 (所以對於最後一個索引), indices[i+1] = array.shape[axis]

  • 如果 indices[i] >= indices[i + 1] ,則 i-th 廣義 “row” 隻是 array[indices[i]]

  • 如果 indices[i] >= len(array)indices[i] < 0 ,則會引發錯誤。

輸出的形狀取決於 indices 的大小,並且可能大於 array (如果 len(indices) > array.shape[axis] 會發生這種情況)。

參數

array array_like

要操作的數組。

indices array_like

配對索引,逗號分隔(不是冒號),指定要減少的切片。

axis 整數,可選

沿其應用 reduceat 的軸。

dtype 數據類型代碼,可選

用於表示中間結果的類型。如果提供,則默認為輸出數組的數據類型,如果未提供輸出數組,則默認為輸入數組的數據類型。

out ndarray,None,或 ndarray 和 None 的元組,可選

存儲結果的位置。如果未提供或 None,則返回一個新分配的數組。為了與 ufunc.__call__ 保持一致,如果作為關鍵字給出,則可以將其包裝在 1 元素元組中。

返回

r ndarray

減少的值。如果提供了 out,則 r 是對 out 的引用。

注意

一個說明性的例子:

如果numpy.array是一維的,函數ufunc.accumulate(array)是相同的ufunc.reduceat(array, indices)[::2]其中numpy.indicesrange(len(array) - 1)在所有其他元素中放置一個零:indices = zeros(2 * len(array) - 1),indices[1::2] = range(1, len(array)).

不要被這個屬性的名稱所迷惑:減少(數組)不一定小於numpy.array.

例子

取四個連續值的運行總和:

>>> np.add.reduceat(np.arange(8),[0,4, 1,5, 2,6, 3,7])[::2]
array([ 6, 10, 14, 18])

二維示例:

>>> x = np.linspace(0, 15, 16).reshape(4,4)
>>> x
array([[ 0.,   1.,   2.,   3.],
       [ 4.,   5.,   6.,   7.],
       [ 8.,   9.,  10.,  11.],
       [12.,  13.,  14.,  15.]])
# reduce such that the result has the following five rows:
# [row1 + row2 + row3]
# [row4]
# [row2]
# [row3]
# [row1 + row2 + row3 + row4]
>>> np.add.reduceat(x, [0, 3, 1, 2, 0])
array([[12.,  15.,  18.,  21.],
       [12.,  13.,  14.,  15.],
       [ 4.,   5.,   6.,   7.],
       [ 8.,   9.,  10.,  11.],
       [24.,  28.,  32.,  36.]])
# reduce such that result has the following two columns:
# [col1 * col2 * col3, col4]
>>> np.multiply.reduceat(x, [0, 3], 1)
array([[   0.,     3.],
       [ 120.,     7.],
       [ 720.,    11.],
       [2184.,    15.]])

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.ufunc.reduceat。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。