矩阵的变换
#矩阵的形状变换
改变矩阵的形状
print(np.arange(15))
a=np.arange(15).reshape(3,5)
a
a.shape
a.ndim#矩阵的维度
a.dtype.name
a.size
运算结果:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
(3, 5)
2
'int32'
15
创建一个全为0的数组
np.zeros((3,4)) #该函数调用必须是元组的形式
运算结果:
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
创建一个全为1的数组
np.ones((2,3,4), dtype=np.int32)
运行结果:
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]])
创建一个定常的数组
np.arange(10,30,5)
运行结果:
array([10, 15, 20, 25])
创建一个随机数组
#numpy中的随机(权值初始化)
np.random.random((2,3))
运行结果:
array([[0.19481467, 0.26041341, 0.64532866],
[0.80580031, 0.23305218, 0.30942521]])
创建一个等比例的数组
#linspace等比例取值
from numpy import pi
np.linspace(0,2*pi,100)
运行结果:
array([0. , 0.06346652, 0.12693304, 0.19039955, 0.25386607,
0.31733259, 0.38079911, 0.44426563, 0.50773215, 0.57119866,
0.63466518, 0.6981317 , 0.76159822, 0.82506474, 0.88853126,
0.95199777, 1.01546429, 1.07893081, 1.14239733, 1.20586385,
1.26933037, 1.33279688, 1.3962634 , 1.45972992, 1.52319644,
1.58666296, 1.65012947, 1.71359599, 1.77706251, 1.84052903,
1.90399555, 1.96746207, 2.03092858, 2.0943951 , 2.15786162,
2.22132814, 2.28479466, 2.34826118, 2.41172769, 2.47519421,
2.53866073, 2.60212725, 2.66559377, 2.72906028, 2.7925268 ,
2.85599332, 2.91945984, 2.98292636, 3.04639288, 3.10985939,
3.17332591, 3.23679243, 3.30025895, 3.36372547, 3.42719199,
3.4906585 , 3.55412502, 3.61759154, 3.68105806, 3.74452458,
3.8079911 , 3.87145761, 3.93492413, 3.99839065, 4.06185717,
4.12532369, 4.1887902 , 4.25225672, 4.31572324, 4.37918976,
4.44265628, 4.5061228 , 4.56958931, 4.63305583, 4.69652235,
4.75998887, 4.82345539, 4.88692191, 4.95038842, 5.01385494,
5.07732146, 5.14078798, 5.2042545 , 5.26772102, 5.33118753,
5.39465405, 5.45812057, 5.52158709, 5.58505361, 5.64852012,
5.71198664, 5.77545316, 5.83891968, 5.9023862 , 5.96585272,
6.02931923, 6.09278575, 6.15625227, 6.21971879, 6.28318531])
将矩阵拓展
#.tile的数组的拓展操作
a =np.arange(0,40,10)
print(a)
b=np.tile(a,(2,2))
print(b)
运行结果:
[ 0 10 20 30]
[[ 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30]]
矩阵的数学运算
a=np.array([20,30,40,50])
b=np.arange(4)
print(a)
print(b)
c=a-b
print(c)
c=c-1
print(c)
b**2
print(b**2)
print(a<35)
运行结果:
[20 30 40 50]
[0 1 2 3]
[20 29 38 47]
[19 28 37 46]
[0 1 4 9]
[ True True False False]
对矩阵进行点乘和线性相乘
A=np.array([[1,1],
[0,1]])
B=np.array([[2,0],
[3,4]])
print(A)
print('-'*10)
print(B)
print('-'*10)
print(A*B)#对应元素相乘
print('-'*10)
print(A.dot(B)) #按照矩阵乘法来计算
print('-'*10)
print(np.dot(A,B))
运算结果
[[1 1]
[0 1]]
----------
[[2 0]
[3 4]]
----------
[[2 0]
[0 4]]
----------
[[5 4]
[3 4]]
----------
[[5 4]
[3 4]]
指数和开根号运算
#指数运算
B=np.arange(3)
print(B)
print(np.exp(B))#指数
print(np.sqrt(B))#开根号
运算结果:
[0 1 2]
[1. 2.71828183 7.3890561 ]
[0. 1. 1.41421356]
矩阵的操作
a=np.floor(10*np.random.random((3,4)))#floor向下取整
print(a)
print('-'*10)
print(a.ravel())#把矩阵变成向量
print('-'*10)
a.shape=(6,2)
print('-'*10)
print(a)
print(a.T) #矩阵的转置
a.reshape(3,-1) #将举证变成自己想要的维度,可以用-1代表自动计算
运行结果:
[[6. 8. 6. 5.]
[8. 9. 3. 8.]
[3. 0. 2. 4.]]
----------
[6. 8. 6. 5. 8. 9. 3. 8. 3. 0. 2. 4.]
----------
----------
[[6. 8.]
[6. 5.]
[8. 9.]
[3. 8.]
[3. 0.]
[2. 4.]]
[[6. 6. 8. 3. 3. 2.]
[8. 5. 9. 8. 0. 4.]]
array([[6., 8., 6., 5.],
[8., 9., 3., 8.],
[3., 0., 2., 4.]])
矩阵的拼接:
a=np.floor(10*np.random.random((2,2)))#floor向下取整
b=np.floor(10*np.random.random((2,2)))#floor向下取整
print(a)
print('-'*10)
print(b)
print('-'*10)
print(np.hstack((a,b)))#按照行拼接
print('-'*10)
print(np.vstack((a,b)))#按照纵拼接
运算结果:
[[9. 5.]
[8. 7.]]
----------
[[3. 1.]
[5. 0.]]
----------
[[9. 5. 3. 1.]
[8. 7. 5. 0.]]
----------
[[9. 5.]
[8. 7.]
[3. 1.]
[5. 0.]]
矩阵的切分
#切分
a=np.floor(10*np.random.random((2,12)))#floor向下取整
print(a)
print('-'*10)
print(np.hsplit(a,3))#按照行切分
print('-'*10)
print(np.hsplit(a,(3,4)))#指定位子切
a=np.floor(10*np.random.random((2,12)))#floor向下取整
print(a)
print('-'*10)
np.vsplit(a,3)#横着切
运行结果:
[[9. 6. 6. 1. 9. 7. 1. 5. 3. 0. 5. 8.]
[0. 8. 6. 6. 7. 5. 8. 3. 3. 2. 7. 9.]]
----------
[array([[9., 6., 6., 1.],
[0., 8., 6., 6.]]), array([[9., 7., 1., 5.],
[7., 5., 8., 3.]]), array([[3., 0., 5., 8.],
[3., 2., 7., 9.]])]
----------
[array([[9., 6., 6.],
[0., 8., 6.]]), array([[1.],
[6.]]), array([[9., 7., 1., 5., 3., 0., 5., 8.],
[7., 5., 8., 3., 3., 2., 7., 9.]])]
[[9. 3. 4. 6. 2. 1. 7. 2. 0. 3. 8. 9.]
[7. 2. 4. 1. 5. 6. 6. 1. 8. 7. 5. 5.]]