我不明白它的作用,只看到它被 sklearn 物件使用。在嘗試一些這樣的測驗時
x = [(1, 2), (2, 3), (3, 4)]
y = [[1, 2], [2, 3], [3, 4]]
print(y[:, 0])
我收到了這個錯誤(x 和 y):
TypeError: list indices must be integers or slices, not tuple
我的假設是:逗號之前告訴 Python 獲取所有條目,而0指定哪個“子集”。
如何正確使用這個運算式,它有什么作用?
uj5u.com熱心網友回復:
正如這里所解釋的,這是一個 numpy 特定的索引陣列符號,而不是普通的 python。這就是它不適用于您的代碼的原因。在您的(初始)情況下,sklearn 物件可能包裝了一個支持 numpy 切片語法的 numpy 陣列。
在您的具體情況下,它將按如下方式作業:
import numpy as np
y = np.array([[1, 2], [2, 3], [3, 4]])
print(y[:, 0])
# prints: [1 2 3]
這將產生沿第一個軸的所有索引(即使用完整列向量),但在第二個軸中僅使用索引 0(即僅使用第一個列向量)。
uj5u.com熱心網友回復:
您表達的內容適用于更復雜的物件,例如 numpy(及其著名的slicing)。對于普通 Python,這是不可能的。要訪問特定號碼(在您的情況下),您必須這樣做x[2][1](4在您的示例中產生)。
要實作您想要的(獲取每個元組的第一項),您可以執行
[item[0] for item in y]. 這是串列理解:遍歷y,獲取每個專案的第一個索引處的物件,并從中創建一個串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394630.html
