В будущем, если вы могли бы, включите больше примеров кода, специфического для данной проблемы, чтобы прояснить, чего вы хотите добиться от своего вопроса. Кластеризация K-средних и случайная инициализация явно не говорят нам, каково значение true_labels
, но я предполагаю, что это 1d массив меток категорий, поэтому я просто отвечу с той точки зрения, что вы хотите понять эти вещи:
- Что
np.asarray()
делает
- Что
np.squeeze()
делает
- Что происходит, когда вы их соединяете.
Во-первых, np.asarray()
делает то, что он преобразует допустимые входные данные (например, список или кортеж) в пустой массив. Пример:
# List to Array
>> list = [1, 2, 3, 4, 5, 6]
>> print(np.asarray(list))
Output: [1 2 3 4 5 6]
# Produces an array of shape (6,)
# Tuple to Array
>> tuple = ([1, 2, 3], [4, 5, 6])
>> print(np.asarray(tuple))
Output: [[1 2 3]
[4 5 6]]
# This produces an array of shape (2, 3)
Теперь мы переходим к тому, что делает np.squeeze()
. Если вы посмотрите на документацию , в ней говорится, что описание функции:
Удаляет одномерные записи из формы массива.
Это означает, что если есть какие-либо избыточные измерения, они будут исключены из вывода. Пример: * +1028 *
>> x = np.array([[[0], [1], [2]]])
>> print(x)
Output: [[[0]
[1]
[2]]]
>> print(x.shape)
Output: (1, 3, 1)
>> print(np.squeeze(x))
Output: [0 1 2]
>> print(np.squeeze(x).shape)
Output: (3,)
Теперь, имея в виду приведенные выше примеры, давайте вернемся к исходному выражению ground_truth = np.squeeze(np.asarray(true_labels))
.
- Давайте возьмем переменную
true_labels
как список чисел, соответствующих категориям.
true_labels
передается в np.asarray
. Возвращается пустой массив 1d.
- Этот массив numpy передается в np.squeeze, который удаляет избыточные размеры, если таковые имеются (т.е. из формы (6, 1) в форму (6,)).
- Сжатый массив numpy назначается как переменная
ground_truth
Надеюсь, это прояснит вам, что происходит в этой строке.