当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。