在机器学习的有监督学习中,常常要把数据分为“特征列”和“标签列”,标签列往往在最后一列,可以用data[:, -1] 或 data[:, cols-1:cols]进行切片。这个时候需要特别注意:对数组来说 得到的结果是不同的,前者将最后一列转为一行,后者是列,对矩阵来说得到的结果是相同的,都是列。
具体如下:
import numpy as np
data = np.array([[1, 2, 3], [3, 4, 5], [6, 43, 5]])
cols = data.shape[-1]
print('对数组进行切片'.center(20, '*'))
print('原始数组数据\n', data)
print('数组:-1 切片\n', data[:, -1])
print('数组:cols-1:cols 切片\n', data[:, cols-1:cols])
print('对数矩阵行切片'.center(20, '*'))
print('原始矩阵数据\n', np.mat(data))
print('矩阵:-1 切片\n', np.mat(data)[:, -1])
print('矩阵:cols-1:cols 切片\n', np.mat(data)[:, cols-1:cols])
结果如下:
******对数组进行切片*******
原始数组数据
[[ 1 2 3]
[ 3 4 5]
[ 6 43 5]]
数组:-1 切片
[3 5 5]
数组:cols-1:cols 切片
[[3]
[5]
[5]]
******对数矩阵行切片*******
原始矩阵数据
[[ 1 2 3]
[ 3 4 5]
[ 6 43 5]]
矩阵:-1 切片
[[3]
[5]
[5]]
矩阵:cols-1:cols 切片
[[3]
[5]
[5]]