numpy基本操作(二)--合并操作

import numpy as np
x = np.array([1,2,3])
y = np.array([3,2,1])
x

array([1, 2, 3])

y

array([3, 2, 1])

concatenate--数组拼接

这里只是将两个样本做前后拼接

np.concatenate([x,y])

array([1, 2, 3, 3, 2, 1])

这里可以加入axis这个参数,抽象可以理解为轴

z = np.random.randint(10,20,(2,3))
z

array([[11, 17, 19],
[12, 10, 17]])

np.concatenate([z,z])

array([[11, 17, 19],
[12, 10, 17],
[11, 17, 19],
[12, 10, 17]])

np.concatenate([z,z],axis=0)#0表示第一个维度也就是行方向进行拼接

array([[11, 17, 19],
[12, 10, 17],
[11, 17, 19],
[12, 10, 17]])

np.concatenate([z,z],axis=1)#表示延着列方向进行拼接

array([[11, 17, 19, 11, 17, 19],
[12, 10, 17, 12, 10, 17]])

#concatenate不支持将不同维度的数据进行拼接,这可以使用renshape转换后实现
x

array([1, 2, 3])

z

array([[11, 17, 19],
[12, 10, 17]])

np.concatenate([x.reshape(1,-1),z])

array([[ 1, 2, 3],
[11, 17, 19],
[12, 10, 17]])

x.reshape(1,-1).shape

(1, 3)

z.shape

(2, 3)

vstack--垂直方向拼接

np.vstack([x,z])

array([[ 1, 2, 3],
[11, 17, 19],
[12, 10, 17]])

hstack--水平方向拼接

h = np.full((2,2),100)
h

array([[100, 100],
[100, 100]])

np.hstack([z,h])

array([[ 11, 17, 19, 100, 100],
[ 12, 10, 17, 100, 100]])

分割操作

x = np.arange(10)
x

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.split(x,[3,7])#这里3和7表示以索引方式进行分割,这里会分成3份

[array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9])]

#多维切分
A = np.arange(16).reshape((4,4))
A

array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])

np.split(A,[2])#这里表示按行方向进行切分

[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]

np.split(A,[2],axis=1)#也可以按列方向进行切割

[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]

#这个函数与合并类似,也有对应的vspli和hsplit方法
x1,x2=np.vsplit(A,[2])
x1

array([[0, 1, 2, 3],
[4, 5, 6, 7]])

x2

array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])

left,right = np.hsplit(A,[2])
left

array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]])

right

array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])

#实例,现在有4*4的数据,前3列代表特征,最后一列代表标签,需要将特征与标签分离
#1.创建一个4*4的矩阵
#2.利用水平分割hsplit分割出特征与标签
#3.将标签向量化
data = np.arange(16).reshape((4,4))
data

array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])

X,y = np.hsplit(data,[-1])
X

array([[ 0, 1, 2],
[ 4, 5, 6],
[ 8, 9, 10],
[12, 13, 14]])

y

array([[ 3],
[ 7],
[11],
[15]])

y = y[:,0]
y

array([ 3, 7, 11, 15])


posted @ 2019-12-09 23:17  Missv4you  阅读(371)  评论(0)    收藏  举报