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  阅读(364)  评论(0)    收藏  举报