唯一

唯一 - 11

版本

  • 名稱Unique (GitHub)

  • 網域main

  • since_version11

  • 函式False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此版本的運算子自版本 11 起可用。

摘要

尋找張量的唯一元素。當提供選用屬性 ‘axis’ 時,會傳回沿著 ‘axis’ 切片的唯一子張量。否則,輸入張量會被展平,並傳回展平張量的唯一值。

此運算子會傳回輸入張量的唯一值或切片的唯一子張量,以及三個選用輸出。第一個輸出張量 ‘Y’ 包含輸入的所有唯一值或子張量。第二個選用輸出張量 ‘indices’ 包含 ‘Y’ 元素在 ‘X’ 中首次出現的索引。第三個選用輸出張量 ‘inverse_indices’ 包含 ‘X’ 的元素在 ‘Y’ 中的對應索引。第四個選用輸出張量 ‘counts’ 包含 ‘Y’ 的每個元素在輸入中的計數。

輸出會依遞增順序排序,或選擇性地依值在輸入中首次出現的順序排序。

https://scipy-docs.dev.org.tw/doc/numpy/reference/generated/numpy.unique.html

範例 1

input_X = [2, 1, 1, 3, 4, 3]
attribute_sorted = 0
attribute_axis = None
output_Y = [2, 1, 3, 4]
output_indices = [0, 1, 3, 4]
output_inverse_indices = [0, 1, 1, 2, 3, 2]
output_counts = [1, 2, 2, 1]

範例 2

input_X = [[1, 3], [2, 3]]
attribute_sorted = 1
attribute_axis = None
output_Y = [1, 2, 3]
output_indices = [0, 2, 1]
output_inverse_indices = [0, 2, 1, 2]
output_counts = [1, 1, 2]

範例 3

input_X = [[1, 0, 0], [1, 0, 0], [2, 3, 4]]
attribute_sorted = 1
attribute_axis = 0
output_Y = [[1, 0, 0], [2, 3, 4]]
output_indices = [0, 2]
output_inverse_indices = [0, 0, 1]
output_counts = [2, 1]

範例 4

input_x = [[[1., 1.], [0., 1.], [2., 1.], [0., 1.]],
            [[1., 1.], [0., 1.], [2., 1.], [0., 1.]]]
attribute_sorted = 1
attribute_axis = 1

中間資料如下所示,以便更好地理解:沿著輸入 input_x 的軸 1(形狀 = (2, 4, 2))切片有 4 個子張量

A: [[1, 1], [1, 1]],
   [[0, 1], [0, 1]],
   [[2, 1], [2, 1]],
   [[0, 1], [0, 1]].

有 3 個唯一子張量

[[1, 1], [1, 1]],
[[0, 1], [0, 1]],
[[2, 1], [2, 1]].

已排序的唯一子張量

B: [[0, 1], [0, 1]],
   [[1, 1], [1, 1]],
   [[2, 1], [2, 1]].

output_Y 是由 B 建構而成

[[[0. 1.], [1. 1.], [2. 1.]],
 [[0. 1.], [1. 1.], [2. 1.]]]

output_indices 是要從 B 對應到 A

[1, 0, 2]

output_inverse_indices 是要從 A 對應到 B

[1, 0, 2, 0]

output_counts

[2, 1, 1]

屬性

  • axis - INT :

    (選用) 要應用唯一的維度。如果未指定,則會傳回展平輸入的唯一元素。負值表示從後面計算維度。可接受的範圍是 [-r, r-1],其中 r = rank(input)。

  • sorted - INT (預設值為 '1')

    (選用) 是否在傳回作為輸出之前,以遞增順序排序唯一元素。必須是 0 或 1 (預設)。

輸入

  • X (異質) - T

    要處理的 N 維輸入張量。

輸出

介於 1 和 4 個輸出之間。

  • Y (異質) - T

    與 ‘X’ 類型相同的張量,包含 ‘X’ 中沿著提供的 ‘axis’ 切片的所有唯一值或子張量,這些值或子張量會排序或保持與輸入 ‘X’ 中出現的順序相同

  • indices (選用,異質) - tensor(int64)

    一個 1 維 INT64 張量,包含 ‘Y’ 元素在 ‘X’ 中首次出現的索引。當提供 ‘axis’ 時,它包含輸入 ‘X’ 上 ‘axis’ 上的子張量索引。當未提供 ‘axis’ 時,它包含展平輸入張量中的值索引。

  • inverse_indices (選用,異質) - tensor(int64)

    一個 1 維 INT64 張量,包含 ‘X’ 的元素在 ‘Y’ 中的對應索引。當提供 ‘axis’ 時,它包含輸出 ‘Y’ 上 ‘axis’ 上的子張量索引。當未提供 ‘axis’ 時,它包含輸出 ‘Y’ 中的值索引。

  • counts (選用,異質) - tensor(int64)

    一個 1 維 INT64 張量,包含輸入 ‘X’ 中 ‘Y’ 的每個元素的計數

類型限制

  • T 屬於 ( tensor(bool)tensor(complex128)tensor(complex64)tensor(double)tensor(float)tensor(float16)tensor(int16)tensor(int32)tensor(int64)tensor(int8)tensor(string)tensor(uint16)tensor(uint32)tensor(uint64)tensor(uint8) )

    輸入可以是任何張量類型。