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中的切片。但是他們沒有在索引框中提到,
。
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中的切片。但是他們沒有在索引框中提到,
。
instance[indice]
語法以indice
作爲參數觸發instance.__getitem__
的呼叫。
此快捷方式還允許使用的語法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
,它被評估爲沒有開始的片段,結束於50
且沒有指定步驟(x:y:z
符號填充空白中的None
,並且不需要第二個:
)。
@roganjosh切片有啓動,停止和步驟參數。如果不存在,它們默認爲None。 –
由於問題是關於逗號的,因此您可能需要特別指出逗號使索引成爲一個元組。 –
@MarkTolonen澄清,謝謝! – Uriel
該符號是['numpy']的特有符號(https://docs.scipy.org/doc/numpy-1.12.0/reference/arrays.indexing.html#basic-slicing-and -indexing) –
@MosesKoledoye這個符號是由numpy實現的,但任何類都可以利用它,正如Uriel的答案所示。 –
@MosesKoledoye雖然它是由python支持,並沒有用在任何地方,但'numpy' –