Когда вы используете квадратные скобки для индексации массивов NumPy, первое число в скобках относится к строке, а второе число относится к столбцу - как игра линейных кораблей.
Теперь вы индексируетемассив нулей с именем labels_
, использующий ваш список с именем labels
, и массив, созданный с помощью np.arange
:
labels_ = array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]
labels = [0,1,1,0,2,1,1,1,0,0]
np.arange(10) = array([0,1,2,3,4,5,6,7,8,9])
Как мы уже говорили, индексирование NumPy выполняется [row,column]
, и вы используетеиндекс [np.arange(10), labels]
. Когда вы даете NumPy несколько значений для индексации, он использует их по очереди, поэтому он ищет первое значение в массиве np.arange(10)
и первый элемент в списке labels
и использует их в качестве индекса строки и индекса столбца для нулей. массив, labels_
.
Мы знаем, что первый элемент в np.arange(10)
равен 0, а первый элемент в labels
также равен 0, поэтому он выглядит в вашем списке labels_
для [0,0] - первый ряд и первый столбец. Вы сказали ему установить индексы в 1 с помощью = 1
, поэтому он делает это.
Обратите внимание, что Python считает от 0, поэтому первая строка - это строка 0, вторая строка - это строка 1,третья строка - строка 2 и т. д. Также обратите внимание, что мы считаем первую строку как верхнюю строку, а первый столбец - как левый столбец.
Итак, теперь мы имеем:
labels_ = array([[1., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]
Далееон смотрит на второе значение в np.arange(10)
и labels
, и мы знаем, что np.arange(10)[1] = 1
и labels[1] = 1
, поэтому он устанавливает строку 1 (вторая строка) и столбец 1 (второй столбец) в 1.
Итак, теперь у нас есть:
labels_ = array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]
Теперь мы ищем третий элемент в np.arange(10)
и labels
и получаем индекс [2,1], а это третий ряд и второй столбецмассив labels_
, который мы установили в `:
labels_ = array([[1., 0., 0.],
[0., 1., 0.],
[0., 1., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]
Мы будем продолжать так до тех пор, пока у нас не закончатся числа в списках, которые мы используем для индексации.