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


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

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

用法:

scipy.ndimage.value_indices(arr, *, ignore_value=None)#

查找給定數組中每個不同值的索引。

參數

arr 整數數組

包含整數值的數組。

ignore_value 整數,可選

在搜索 arr 數組時將忽略該值。如果未給出,則找到的所有值都將包含在輸出中。默認為“無”。

返回

indices 字典

每個不同值的數組索引的 Python 字典。字典由不同的值作為鍵,條目是數組索引元組,涵蓋數組中該值的所有出現。

該字典會占用大量內存,通常是輸入數組大小的幾倍。

注意

對於具有很少不同值的小數組,可以使用numpy.unique()找到所有可能的值,並且(arr == val)找到該數組中的每個值。然而,對於具有許多不同值的大型數組,這可能變得極其低效,因為定位每個值將需要對整個數組進行新的搜索。使用此函數,本質上是一次搜索,並為所有不同的值保存索引。

當將分類圖像(例如分割或分類)與其他數據的關聯圖像進行匹配時,這非常有用,從而允許計算任何per-class統計數據。為 scipy.ndimage.mean()scipy.ndimage.variance() 等函數提供更靈活的替代方案。

其他一些密切相關的函數,具有不同的優點和缺點,也可以在 scipy.stats.binned_statistic()scikit-image 函數 skimage.measure.regionprops() 中找到。

IDL 用戶請注意:這提供了與 IDL 的 REVERSE_INDICES 選項等效的函數(根據 HISTOGRAM 函數的 IDL 文檔)。

例子

>>> import numpy as np
>>> from scipy import ndimage
>>> a = np.zeros((6, 6), dtype=int)
>>> a[2:4, 2:4] = 1
>>> a[4, 4] = 1
>>> a[:2, :3] = 2
>>> a[0, 5] = 3
>>> a
array([[2, 2, 2, 0, 0, 3],
       [2, 2, 2, 0, 0, 0],
       [0, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 0],
       [0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0]])
>>> val_indices = ndimage.value_indices(a)

字典 val_indices 將為輸入數組中的每個不同值都有一個條目。

>>> val_indices.keys()
dict_keys([0, 1, 2, 3])

每個值的條目都是一個索引元組,用於定位具有該值的元素。

>>> ndx1 = val_indices[1]
>>> ndx1
(array([2, 2, 3, 3, 4]), array([2, 3, 2, 3, 4]))

這可用於索引原始數組或具有相同形狀的任何其他數組。

>>> a[ndx1]
array([1, 1, 1, 1, 1])

如果忽略零,則生成的字典將不再有零的條目。

>>> val_indices = ndimage.value_indices(a, ignore_value=0)
>>> val_indices.keys()
dict_keys([1, 2, 3])

相關用法


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