ground_truth = np.squeeze (np.asarray (true_labels)) - PullRequest
0 голосов
/ 21 марта 2019

Пожалуйста, помогите мне понять эту строку кода?

Что делают функции squeeze и asarray?

В этом подходе кластеризация k-средних с k = 5 и случайная инициализация были установлены.

ground_truth = np.squeeze(np.asarray(true_labels))

Большое спасибо

1 Ответ

0 голосов
/ 21 марта 2019

В будущем, если вы могли бы, включите больше примеров кода, специфического для данной проблемы, чтобы прояснить, чего вы хотите добиться от своего вопроса. Кластеризация K-средних и случайная инициализация явно не говорят нам, каково значение true_labels, но я предполагаю, что это 1d массив меток категорий, поэтому я просто отвечу с той точки зрения, что вы хотите понять эти вещи:

  1. Что np.asarray() делает
  2. Что np.squeeze() делает
  3. Что происходит, когда вы их соединяете.

Во-первых, 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)).

  1. Давайте возьмем переменную true_labels как список чисел, соответствующих категориям.
  2. true_labels передается в np.asarray. Возвращается пустой массив 1d.
  3. Этот массив numpy передается в np.squeeze, который удаляет избыточные размеры, если таковые имеются (т.е. из формы (6, 1) в форму (6,)).
  4. Сжатый массив numpy назначается как переменная ground_truth

Надеюсь, это прояснит вам, что происходит в этой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...