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]
的含义是什么?
我检查了另一个SO post的切片。但他们没有提到索引框中的,
。
答案 0 :(得分:3)
instance[indice]
语法触发instance.__getitem__
调用indice
作为参数。
此快捷方式还允许使用语法x:y:z
来表示slice(x, y, z)
,这通常是如何使用的,但它也可以适用于其他类型的索引,如元组或字符串,只要您的__getitem__
支持这些内容。
在这段代码中,它被用作numpy切片二维数组的一部分,元组包含每个维度的切片。
为了将来参考,您可以使用此课程进行测试:
>>> class sliced:
... def __getitem__ (self, index):
... print(index)
>>> d = sliced()
>>> d[:50, 1]
(slice(None, 50, None), 1)
对于该特定情况,逗号使索引成为元组(如果在REPL中键入,则为1, 2
),其第一项是:50
,其被评估为没有启动的切片,在50
结束且未指定任何步骤(空格中的x:y:z
符号填充None
,并且不需要第二个:
。
答案 1 :(得分:0)