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

运行结果:

列表第一个元素 1
列表第二个元素 2 2
列表最后一个元素 5 5
1 ##切片的概念
2 ##1) [start:end]:start为起始索引位置(包含start),end为结束索引位置(不包含end)。
3 ##2) [start:end:step]:同上一样,不同的是step,step为步长,不含step时默认为1(此时无间隔),step也可以为负值。
4 my_list = [1,2,3,4,5,6,7,8,9,]
5 print('取列表的前5项',my_list[0:4])#当0省略的时候默认为0,即为my_list[:4]
6 print('取列表的第2-4项',my_list[1:4])#注意4是列表的第五项,但是在这里是不包含4的,所以没有第五项
7 print('取列表所有项,步长为2',my_list[::2])#步长为2,也就是走2步,所以间隔为1
8 print('取列表的逆序',my_list[::-1])#当步长为-1的时候,也就是反向走了一遍,即为逆序

运行结果:

取列表的前5项 [1, 2, 3, 4]
取列表的第2-4项 [2, 3, 4]
取列表所有项,步长为2 [1, 3, 5, 7, 9]
取列表的逆序 [9, 8, 7, 6, 5, 4, 3, 2, 1]
 1 ##多维切片数组
 2 y = np.arange(35).reshape(5,7)
 3 print(y[1:5:2,::3])
 4 ##代表行上取[1:5:2]切片,列上取[::3]切片
 5 
 6 ##多位索引数组
 7 print( y[np.array([0,2,4]), np.array([0,1,2])])
 8 ##选择0,2,4行,0,1,2列的数
 9 print(y[np.array([0,2,4]), 1])
10 ##选取第0,2,4行,第1列的值
11 print( y[np.array([0,2,4])])
12 ##选取第0,2,4行的值
13 
14 ##数组与切片的组合索引数组 
15 print(y[np.array([0,2,4]),1:3])
16 ##使用数组来索引第一个轴,使用切换来索引第二个轴

运行结果:

[[ 7 10 13]
 [21 24 27]]
[ 0 15 30]
[ 1 15 29]
[[ 0  1  2  3  4  5  6]
 [14 15 16 17 18 19 20]
 [28 29 30 31 32 33 34]]
[[ 1  2]
 [15 16]
 [29 30]]

 

 

posted @ 2021-08-20 22:50  编程菜鸡小徐震  阅读(72)  评论(0)    收藏  举报