import matplotlib.pyplot as plt

plt.scatter(X[:50, 0], X[:50, 1],
            color='red', marker='o', label='setosa')

Этот код я получил от Python Machine Learning. Но я не понимаю, что означают X[:50, 0] и X[:50, 1]?

Я проверил нарезку в другой публикации. Но нигде они не упомянули , в поле индекса.

1
InQusitive 28 Май 2017 в 21:42

2 ответа

Лучший ответ

Синтаксис instance[indice] запускает вызов instance.__getitem__ с indice в качестве аргумента.

Этот ярлык позволяет также использовать синтаксис x:y:z для представления slice(x, y, z), который обычно используется так, но его можно использовать и для других типов индексов, таких как кортежи или строки, если ваш __getitem__ поддерживает это.

В этом коде он используется как часть способа Numpy нарезать 2-мерные массивы с кортежем, содержащим срезы для каждого измерения.


Для дальнейшего использования вы можете протестировать этот класс:

>>> class sliced:
...     def __getitem__ (self, index):
...             print(index)

>>> d = sliced()

>>> d[:50, 1]
(slice(None, 50, None), 1)

Для этого конкретного случая запятая делает индекс кортежем (как 1, 2, если бы он был напечатан в REPL), первый элемент которого является :50, который оценивается как фрагмент без начала, заканчивающийся на { {X2}} и не указано ни одного шага (x:y:z нотация заполняет None пробелами и не требует второго :).

3
Uriel 28 Май 2017 в 19:18

Встроенная индексация списка Python не похожа на X[:50, 1]. Модуль numpy добавил этот синтаксис в свой класс массива. на самом деле этот тип индексации введен в MATLAB. см. здесь для получения дополнительной информации.

0
Alireza Afzal aghaei 28 Май 2017 в 19:04