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


Python SciPy ndimage.labeled_comprehension用法及代碼示例


本文簡要介紹 python 語言中 scipy.ndimage.labeled_comprehension 的用法。

用法:

scipy.ndimage.labeled_comprehension(input, labels, index, func, out_dtype, default, pass_positions=False)#

大致相當於 [func(input[labels == i]) for i in index]。

按順序將任意函數(適用於 數組 輸入)應用於由標簽和索引指定的 N-D 圖像數組的子集。存在該選項以向函數提供位置參數作為第二個參數。

參數

input array_like

從中選擇要處理的標簽的數據。

labels 數組 或無

輸入對象的標簽。如果不是 None,則數組必須與輸入的形狀相同。如果為 None,則將 func 應用於 raveled 輸入。

index int,整數序列或無

要應用 func 的標簽子集。如果是標量,則返回單個值。如果為 None,則 func 應用於標簽的所有非零值。

func 可調用的

應用於輸入標簽的 Python 函數。

out_dtype 類型

用於結果的 Dtype。

default 整數、浮點數或無

標簽中不存在索引元素時的默認返回值。

pass_positions 布爾型,可選

如果為 True,則將線性索引作為第二個參數傳遞給 func。默認為假。

返回

result ndarray

將 func 應用於每個標簽以輸入索引的結果。

例子

>>> import numpy as np
>>> a = np.array([[1, 2, 0, 0],
...               [5, 3, 0, 4],
...               [0, 0, 0, 7],
...               [9, 3, 0, 0]])
>>> from scipy import ndimage
>>> lbl, nlbl = ndimage.label(a)
>>> lbls = np.arange(1, nlbl+1)
>>> ndimage.labeled_comprehension(a, lbl, lbls, np.mean, float, 0)
array([ 2.75,  5.5 ,  6.  ])

回退到默認值:

>>> lbls = np.arange(1, nlbl+2)
>>> ndimage.labeled_comprehension(a, lbl, lbls, np.mean, float, -1)
array([ 2.75,  5.5 ,  6.  , -1.  ])

傳球位置:

>>> def fn(val, pos):
...     print("fn says: %s : %s" % (val, pos))
...     return (val.sum()) if (pos.sum() % 2 == 0) else (-val.sum())
...
>>> ndimage.labeled_comprehension(a, lbl, lbls, fn, float, 0, True)
fn says: [1 2 5 3] : [0 1 4 5]
fn says: [4 7] : [ 7 11]
fn says: [9 3] : [12 13]
array([ 11.,  11., -12.,   0.])

相關用法


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