python库——numpy
1 import numpy as np ##引入numpy库
1 a=np.array([1,2,3])
2 b=np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])
3 c=np.array([[1,2,3,4],[2,3,4,5]])
4 ##使用np.array()创建一个矩阵
5 ##a=np.array(1,2,3),b=np.array([1,2,3],[2,3,4],[3,4,5],[4,5,6]),c=np.array([1,2,3,4],[2,3,4,5])都是错误写法,小括号里面需要是一个数组而不是一列数字
6 print(a,b,c)
运行结果:
[1 2 3] [[1 2 3]
[2 3 4]
[3 4 5]
[4 5 6]] [[1 2 3 4]
[2 3 4 5]]
1 m=np.zeros((3,5))
2 n=np.zeros((2,3))
3 ##使用np.zeros((a,b))函数创建一个元素都为零的a乘b的矩阵
4 print(m)
5 print(n)
运行结果:
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]]
1 m=np.ones((3,5))
2 n=np.ones((2,3))
3 ##使用np.ones((a,b))函数创建一个元素都为一的a乘b的矩阵
4 print(m)
5 print(n)
运行结果:
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]]
1 m=np.arange(0,17,0.5)
2 n=np.linspace(0,15,16)
3 print(m)
4 print(n)
5 ## np.arange(begin, end, step)中指定起始区间,终止区间和步长每经过一个步长取一个数字
6 ##np.linspace(begin, end, num)中指定起始终止区间和需要取的数字个数,每两个相邻数字之间差的绝对值相等
运行结果:
[ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5
7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.5 12. 12.5 13. 13.5
14. 14.5 15. 15.5 16. 16.5]
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.]
1 m=np.arange(0,17,0.5)
2 n=m.reshape(2,17)
3 ##使用Matrix.reshape(a,b)函数,将Matrix矩阵转化为(a,b)的矩阵
4 print(m)
5 print(n)
6 ##也可以直接使用np.arange(begin, end, step).reshape(a,b)函数
7 x=np.arange(0,6,1).reshape(2,3)
8 print(x)
9 ##注意np.arange(int a)=np.arange(0,a,1)
10 y=np.arange(6)
11 print(y)
运行结果:
[ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5
7. 7.5 8. 8.5 9. 9.5 10. 10.5 11. 11.5 12. 12.5 13. 13.5
14. 14.5 15. 15.5 16. 16.5]
[[ 0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5 5. 5.5 6. 6.5
7. 7.5 8. ]
[ 8.5 9. 9.5 10. 10.5 11. 11.5 12. 12.5 13. 13.5 14. 14.5 15.
15.5 16. 16.5]]
[[0 1 2]
[3 4 5]]
[0 1 2 3 4 5]
1 b=np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])
2 print(np.ndim(b))
3 ##使用函数np.ndim(Matrix)求解矩阵的维度
4 print(np.shape(b))
5 ##使用函数np.shape(Matrix)求解矩阵的形状
6 print(np.size(b))
7 ##使用函数np.size(Matrix)求解矩阵的元素个数
8 print(b.dtype)
9 ##使用函数Matrix.dtype求解矩阵中的元素类型
10 a=np.array([1,2,3])
11 c=np.array([0,1,2])
12 print(a+c)
13 print(a-c)
14 print(2*a)
15 ##矩阵可以进行加法减法和数乘
16 a=np.array([[1,2,3],[2,3,2],[1,4,3]])
17 b=np.array([[2,3],[1,4],[2,5]])
18 c=np.array([2,4,6])
19 print(np.dot(a,b))
20 ##用函数np.dot(Matrix a,Matrix b)实现矩阵a乘b
21 print(np.linalg.det(a))
22 ##用函数np.linalg.det(Matrix a)运算a的行列式
23 print(np.linalg.solve(a,c))
24 ##用函数np.linalg.solve(a,b)表示a*x=b中矩阵x的值
25 print(np.linalg.inv(a))
26 ##逆矩阵可以用numpy.linalg.inv()函数来求
27 x1=a*c
28 x2=np.dot(c,a)
29 print(x1)
30 print(x2)
31 ##从结果可以看出‘*’和np.dot(a,b)的区别
运行结果:
2
(4, 3)
12
int32
[1 3 5]
[1 1 1]
[2 4 6]
[[10 26]
[11 28]
[12 34]]
8.000000000000002
[-0.5 2. -0.5]
[[ 0.125 0.75 -0.625]
[-0.5 0. 0.5 ]
[ 0.625 -0.25 -0.125]]
[[ 2 8 18]
[ 4 12 12]
[ 2 16 18]]
[16 40 32]
1 a=np.array([[1,2,3],[2,3,2],[1,4,3]])
2 b=a
3 print(a)
4 print(b)
5 b[2,2]=100
6 print(a)
7 print(b)
8 ##直接使用=赋值是数组的浅拷贝,浅拷贝时两个数组的存储空间一致,修改其中一个数组另一个也会发生改变
运行结果:
[[1 2 3]
[2 3 2]
[1 4 3]]
[[1 2 3]
[2 3 2]
[1 4 3]]
[[ 1 2 3]
[ 2 3 2]
[ 1 4 100]]
[[ 1 2 3]
[ 2 3 2]
[ 1 4 100]]
1 a=np.array([[1,2,3],[2,3,2],[1,4,3]])
2 b=a.copy()
3 print(a)
4 print(b)
5 b[2,2]=100
6 print(a)
7 print(b)
8 ##使用函数a.copy()实现深拷贝,深拷贝时拷贝完成后的数组会存放在与原数组不同的存储空间里
运行结果:
[[1 2 3]
[2 3 2]
[1 4 3]]
[[1 2 3]
[2 3 2]
[1 4 3]]
[[1 2 3]
[2 3 2]
[1 4 3]]
[[ 1 2 3]
[ 2 3 2]
[ 1 4 100]]
1 ##索引的概念
2 ##对于正索引值,第一个元素对应的索引值为0,第二个元素的索引值为1,依此类推,最后一个元素的索引值对应的就是列表内总元素的数量减1。
3 ##而对于负索引值,-1代表的是元素的最后一个,然后依次递减到元素的第一位
4 my_list = [1,2,3,4,5]
5 print('列表第一个元素',my_list[0])#访问第一个元素,索引值为0
6 print('列表第二个元素',my_list[1],my_list[-4])#访问第二个元素,正索引值为1,负索引值为-4
7 print('列表最后一个元素',my_list[4],my_list[-1])#访问最后一个元素,正索引值为4,负索引值为-1
运行结果:

浙公网安备 33010602011771号