我不明白它是干什么的,只看到它被一个滑雪板所用。试着做一些这样的测试
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
指定哪个‘子集’。
如何正确地使用这个表达式,以及它是做什么的?
发布于 2021-12-27 12:45:03
正如解释过的这里,这是索引数组的一种特定于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(即只使用第一列向量)。
发布于 2021-12-27 12:40:00
您所表达的内容将适用于更复杂的对象,如numpy (及其著名的切片)。在vanilla的例子中,这是不可能的。要访问特定的数字(在您的例子中),您必须执行x[2][1]
(在您的示例中生成4
)。
为了实现您想要的(每个元组的第一项),您可以执行[item[0] for item in y]
。这是列表理解:遍历y
,在每个项的第一个索引处获取对象,并从中列出一个列表。
https://stackoverflow.com/questions/70495550
复制相似问题