import numpy as np
#垂直方向的拼接使用vstack,水平方向的拼接使用hstack(注意垂直方向列数要相同,水平方向拼接行数要相同)
vstack1 = np.random.randint(0,10,size=(3,4))
vstack1
array([[9, 5, 2, 4],
[0, 7, 3, 9],
[5, 6, 8, 0]])
vstack2 = np.random.randint(0,10,size=(2,4))
vstack2
array([[6, 7, 8, 0],
[0, 1, 7, 5]])
vstack3 = np.vstack([vstack1,vstack2])
vstack3
array([[9, 5, 2, 4],
[0, 7, 3, 9],
[5, 6, 8, 0],
[6, 7, 8, 0],
[0, 1, 7, 5]])
面进行水平拼接
#下面进行水平拼接
hstack4 = np.random.randint(0,10,size=(4,4))
hstack4
array([[7, 1, 3, 6],
[0, 1, 6, 7],
[1, 8, 2, 0],
[4, 1, 1, 7]])
hstack5 = np.random.randint(0,10,size=(4,2))
hstack5
array([[0, 2],
[4, 4],
[5, 7],
[6, 1]])
hstack6 = np.hstack([hstack4,hstack5])
hstack6
array([[7, 1, 3, 6, 0, 2],
[0, 1, 6, 7, 4, 4],
[1, 8, 2, 0, 5, 7],
[4, 1, 1, 7, 6, 1]])
使用reshape,resize
#数组变多维使用reshape,resize
a1 =np.arange(1,9)
a1
array([1, 2, 3, 4, 5, 6, 7, 8])
a2 =a1.reshape(4,2)
a2
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
a3 =a1.resize(2,4)
a3
a1
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
数组
#resize没有任何返回值,是将原来的数组直接修改
a4
a4 =np.arange(1,10)
a4
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a5 =np.eye(3,3)
a5
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
数组
#使用eye()函数直接生成n行n列的单位数组,即主对角线全为1其余元素全为0
#数组的切割
#数组的切割
h1 = np.random.randint(0,10,size=(3,4))
print(h1)
np.hsplit(h1,(1,2))
#没有传递按什么方向分,默认按行分
[[5 1 8 1]
[5 2 5 2]
[1 1 4 8]]
[array([[5],
[5],
[1]]),
array([[1],
[2],
[1]]),
array([[8, 1],
[5, 2],
[4, 8]])]
v1 =np.random.randint(0,10,size=(4,5))
print(v1)
[[0 7 0 2 1]
[8 4 7 0 7]
[6 0 6 6 0]
[4 7 6 3 6]]
np.vsplit(v1,(2,3))
[array([[0, 7, 0, 2, 1],
[8, 4, 7, 0, 7]]),
array([[6, 0, 6, 6, 0]]),
array([[4, 7, 6, 3, 6]])]
切,认为是水平方向
#vsplit是按行切,即认为是垂直方向,hsplit是按列切,认为是水平方向
#数组的转置使用.T或transpose
b1 = np.arange(1,9)
print(b1)
[1 2 3 4 5 6 7 8]
c1
c1 = b1.reshape(2,4)
c1
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
c1.T
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
#可以看到使用.T对一个2行4列的数组进行了转置成为了4行2列的数组。
c1.transpose()
array([[1, 5],
[2, 6],
[3, 7],
[4, 8]])
#可以看到与上述.T所产生的结果是相一致的
#这里的代码是用jupyter Notbook所写及运行的