非常简单地说,对于相同的训练数据帧df,当我使用X = df.iloc [:,:-1] .values时,它将选择直到数据帧的倒数第二列而不是最后一列(这是我想要的但是这是一个我以前从未见过的奇怪行为,而且我知道这是第二列的第二个值,而该行的最后一列的值是不同的.
但是,使用y = df.iloc [:, - 1] .values给出了最后一列的值的行向量,这正是我想要的.为什么X的负1给我第二列的第二个值呢?

jez*_*ael 10
我认为您只有两列df,因为如果有更多列,请iloc选择所有列而不是最后一列:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
print(df.iloc[:, :-1])
A B C D E
0 1 4 7 1 5
1 2 5 8 3 3
2 3 6 9 5 6
X = df.iloc[:, :-1].values
print (X)
[[1 4 7 1 5]
[2 5 8 3 3]
[3 6 9 5 6]]
print (X.shape)
(3, 5)
Run Code Online (Sandbox Code Playgroud)
只是为了清楚起见
Python 列表切片语法规定,a:b它将获取a以及 之前但不包括 的所有内容b。 a:将会得到a以及之后的一切。 :b会得到之前的一切b但没有b。的列表索引-1指的是最后一个元素。 :-1遵循与上面相同的标准,因为这会获取最后一个元素之前的所有内容,但不是最后一个元素。如果您想要包含最后一个元素,请使用:.
| 归档时间: |
|
| 查看次数: |
30587 次 |
| 最近记录: |