Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
unique
удалить все повторяющиеся компоненты из вектора или матрицы
Синтаксис
[N, km, kn, nb] = unique(M) [N, km, kn, nb] = unique(M, orient) [N, km, kn, nb] = unique(.., "keepOrder") [N, km, kn, nb] = unique(.., "uniqueNan")
Аргументы
- M
вектор или матрица чисел или строк
- orient
флаг с возможными значениями: 1 или "r", 2 или "c". Не может использоваться, если
M
является гиперматрицей.- N
Если
orient
не используется: вектор извлечённыхM
компонентов, сортированных в полядке возрастания. ЕслиM
является вектором-строкой, тоN
так же является вектором-строкой. В случаях всех иныхM
N
является матрицей или вектором-столбцом.- Если
orient
используется: матрица извлечённыхM
строк или столбцов, сортированных в лексикографическом порядке возрастания.
- k
Вектор индексов первых встреченных значений, таких что
N(i) = M(k(i))
илиN(i,:) = M(k(i),:)
илиN(:,i) = M(:,k(i))
.k
является строкой, еслиM
является строкой или если используетсяorient="c"
. В проитвном случае это столбец.- kn
- Not yet implemented.
Vector of indices of first encountered occurrences, such that
M(i) = N(kn(i))
orM(i,:) = N(kn(i),:)
orM(:,i) = N(:,kn(i))
. - nb
Вектор целых чисел > 0 той же формы, что и
k
: количество случаевM
соответствующих непродублированных элементов (компоентов, строк, столбцов) возвращаемых вN
.
Описание
unique(M)
возвращает вектор, который содержит уникальные элементы
M
в порядке возрастания.
unique(M,"r")
или unique(M,1)
возвращает
уникальные строки M
в лексикографическом порядке возрастания.
unique(M,"c")
или unique(M,2)
возвращает
уникальные столбцы M
в лексикографическом порядке возрастания.
unique(M,.. "keepOrder")
возвращает M
недублированных
входов в их исходном порядке в M
. "keepOrder"
нечувствителен
к регистру.
unique(M,.. "uniqueNan")
принимает все значения Nan одинаковыми и не дублирует их.
По умолчанию любой Nan отличается от другого Nan включая себя самого: %nan<>%nan
равен истине, пока не будет использоваться "uniqueNan"
. Определение
"uniqueNan"
нечувствительно к регистру.
Примеры
С некотороми числами:
M = int8([2 0 2 2 1 1 1 2 1 1 0 1 1 0 1 1 0 1 2 0 1 2 2 0 1 1 2 0 1 0 0 0 ]) [u, km] = unique(M) [uc, kmc] = unique(M, "c")
--> M M = 2 0 2 2 1 1 1 2 1 1 0 1 1 0 1 1 0 1 2 0 1 2 2 0 1 1 2 0 1 0 0 0 --> [u, km] = unique(M) u = 0 1 2 km = 2. 4. 1. --> [uc, kmc] = unique(M, "c") uc = 0 0 0 1 1 1 2 2 0 1 2 0 1 2 0 2 kmc = 14. 2. 11. 12. 5. 6. 1. 3.
С комплексными числами:
i = %i; c = [1+i, 1-i, -i, i, -i, 1+i] [u, k] = unique(c) [uc, kc] = unique(c, "c")
--> c = [1+i, 1-i, -i, i, -i, 1+i] c = 1. + i 1. - i -i i -i 1. + i --> [u, k] = unique(c) u = -i i 1. - i 1. + i k = 3. 4. 2. 1.
С текстом:
t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA" "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA" ] u = unique(t)' [u, kt, ku, nb] = unique(t(1,:)) [u, kt] = unique(t(1,:), "keepOrder") // сохранение исходного порядка элементов строки №1 [uc, ktc, kuc, nb] = unique(t, "c") [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder") // сохранение исходного порядка столбцов
--> t = ["BA" "BB" "AB" "BA" "AB" "BA" "AB" "AB" "BA" "AA" "AB" "BA" "BA" "BA" "AA" > "AA" "AB" "AA" "AA" "BB" "BB" "BB" "BA" "AB" "AB" "BB" "BB" "AB" "AB" "AA" > ] t = !BA BB AB BA AB BA AB AB BA AA AB BA BA BA AA ! !AA AB AA AA BB BB BB BA AB AB BB BB AB AB AA ! --> u = unique(t)' u = !AA AB BA BB ! --> [u, kt, ku, nb] = unique(t(1,:)) u = !AA AB BA BB ! kt = 10. 3. 1. 2. nb = 2. 5. 7. 1. --> [u, kt] = unique(t(1,:), "keepOrder") // сохранение исходного порядка u = !BA BB AB AA ! kt = 1. 2. 3. 10. --> [uc, ktc, kuc, nb] = unique(t, "c") uc = !AA AA AB AB AB BA BA BA BB ! сортированные столбцы !AA AB AA BA BB AA AB BB AB ! ktc = 15. 10. 3. 8. 5. 1. 9. 6. 2. nb = 1. 1. 1. 1. 3. 2. 3. 2. 1. --> [uc, ktc, kuc, nb] = unique(t, "c", "keepOrder") // сохранение исходного порядка uc = !BA BB AB AB BA AB BA AA AA ! !AA AB AA BB BB BA AB AB AA ! ktc = 1. 2. 3. 5. 6. 8. 9. 10. 15. nb = 2. 1. 1. 3. 2. 1. 3. 1. 1.
Со значениями Nan (и Inf). Опция "uniqueNan":
M = [2 2 %nan 1 2 0 1 %nan 0 %nan 1 0 1 %nan 0 %inf 0 1 %inf 1 ]; [v, km, kv, n] = unique(M); v',n' [v, km, kv, n] = unique(M, "uniqueNan"); v',n' unique(M, "c") [v, kmc, kvc, n] = unique(M, "c", "uniqueNan")
--> M M = 2. 2. Nan 1. 2. 0. 1. Nan 0. Nan 1. 0. 1. Nan 0. Inf 0. 1. Inf 1. --> [v, km, kv, n] = unique(M); v',n' ans = 0. 1. 2. Inf Nan Nan Nan Nan ans = 5. 6. 3. 2. 1. 1. 1. 1. --> [v, km, kv, n] = unique(M, "uniqueNan"); v',n' ans = 0. 1. 2. Inf Nan ans = 5. 6. 3. 2. 4. --> unique(M, "c") ans = 0. 1. 1. 2. 2. Nan Nan Nan Inf 0. Nan 0. 1. 1. 1. 1. --> [v, kmc, kvc, n] = unique(M, "c", "uniqueNan") v = 0. 1. 1. 2. 2. Nan Inf 0. Nan 0. 1. 1. kmc = 6. 7. 4. 2. 1. 3. n = 2. 1. 1. 2. 1. 3.
Смотрите также
- members — count (and locate) in an array each element or row or column of another array
- gsort — sorting by quick sort algorithm
- vectorfind — ищет расположение вектора (отмеченный символом групповой подстановки) в матрице или гиперматрице
- grep — поиск соответствий строки в векторе строк
- union — выделяет объединение компонентов векторов
- intersect — returns the unduplicated elements or rows or columns met in both input arrays
История
Version | Description |
6.0.2 | unique() теперь может использоваться для удаления дубликатов комплексных чисел. |
6.1.0 |
|
Report an issue | ||
<< union | Операции с множествами | Тригонометрия >> |