Flask接口签名sign原理与实例代码浅析
313
2022-06-19
0、NumPy 与 ndarry
NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生。
它提供:
快速高效的多维数组对象 ndarray;
直接对数组执行数学运算及对数组执行元素级计算的函数;
线性代数运算、随机数生成;
将 C、C++、Fortran 代码集成到 Python 的工具等。
它专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA 用其处理一些本来使用 C++,Fortran 或Matlab 等所做的任务。
ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。
ndarray 的一个特点是同构:即其中所有元素的类型必须相同。
1、数组属性查看:类型、尺寸、形状、维度
import numpy as np
a1 = np.array([1,2,3,4],dtype=np.complex128)
print(a1)
print("数据类型",type(a1)) #打印数组数据类型
print("数组元素数据类型:",a1.dtype) #打印数组元素数据类型
print("数组元素总数:",a1.size) #打印数组尺寸,即数组元素总数
print("数组形状:",a1.shape) #打印数组形状
print("数组的维度数目:",a1.ndim) #打印数组的维度数目
1
2
3
4
5
6
7
8
2、numpy元素中数据存储方式,数据类型,类型转换
2.1 查看元素数据存储类型
dtype=。。。 可作为参数输入到之后的类型转换新array建立函数中,作为array初始化的参数选择。
import numpy as np
#指定数据 dtype
a = np.array([2,23,4],dtype=np.int)
print(a.dtype)
# int 64
a = np.array([2,23,4],dtype=np.int32)
print(a.dtype)
# int32
a = np.array([2,23,4],dtype=np.float)
print(a.dtype)
# float64
a = np.array([2,23,4],dtype=np.float32)
print(a.dtype)
# float32
a = np.array([1,2,3,4],dtype=np.complex128)
print(a.dtype)
# complex128
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2.2 元素数据存储类型转换
import numpy as np
# 通过 ndarray 的 astype() 方法进行强制类型转换
# astype 会创建一份新的数组,即便是指定为同类型也依然如此
# 浮点数转换为整数时小数部分会被舍弃:
a = np.array([2.5,3.1,4.9],dtype=np.float32)
b = a.astype(np.int64)
print(b.dtype)
print(b)
# 如果某字符串类型的数组里的元素全是数字,也可以通过此方法直接转换成数值类型
a = np.array(["2.5","3.1","4.9"],dtype=np.float32)
b = a.astype(np.float64)
print(b.dtype)
print(b)
1
2
3
4
5
6
7
8
9
10
11
12
13
3、List类型与numpy. ndarray类型的互相转换
array函数接受一切序列类型的对象
import numpy as np
list1 = [1,2,3,4,5]
#List转numpy.array:
temp = np.array(list1)
print(temp)
print("数据类型",type(temp)) #打印数组数据类型
print("数组元素数据类型:",temp.dtype) #打印数组元素数据类型
print("数组元素总数:",temp.size) #打印数组尺寸,即数组元素总数
print("数组形状:",temp.shape) #打印数组形状
#numpy.array转List:
arr = temp.tolist()
print(arr)
print("数据类型",type(arr)) #打印数组数据类型
1
2
3
4
5
6
7
8
9
10
11
12
13
4、创建 ndarray 数组
4.1 方法一:列表转换
import numpy as np
#创建数组
array = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵
print(array)
print('number of dim:',array.ndim) # 维度
# number of dim: 2
print('shape :',array.shape) # 行数和列数
# shape : (2, 3)
print('size:',array.size) # 元素个数
# size: 6
1
2
3
4
5
6
7
8
9
10
4.2 zero,ones,empty函数创建特殊数组
zeros() 函数和 ones() 函数这两个函数分别可以创建指定长度或形状的全0或全1的 ndarray 数组
empty() 函数这个函数可以创建一个没有任何具体值的 ndarray 数组,需要注意一点的是,这个函数返回的值不一定是 0,可能是其他未初始化的垃圾值。
import numpy as np
#创建全零数组
a = np.zeros((3,4)) # 数据全为0,3行4列
print('a:',a)
b = np.zeros(a.shape) # 数据全为0,3行4列
print('b:',b)
#创建全一数组, 同时也能指定这些特定数据的 dtype:
a = np.ones((3,4),dtype = np.int) # 数据为1,3行4列
print('a:',a)
b = np.ones(a.shape) # 数据全为0,3行4列
print('b:',b)
#创建全空数组, 其实每个值都是接近于零的数:
a = np.empty((3,4)) # 数据为empty,3行4列
print('a:',a)
b = np.empty(a.shape) # 数据全为0,3行4列
print('b:',b)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4.3 arrange linspace 创建线性数组
import numpy as np
#用 arange 创建连续数组:
a = np.arange(10,20,2) # 10-19 的数据,2步长
print(a)
#使用 reshape 改变数据的形状
a = np.arange(12).reshape((3,4)) # 3行4列,0到11
print(a)
#用 linspace 创建线段型数据:
a = np.linspace(1,10,20) # 开始端1,结束端10,且分割成20个数据,生成线段
print(a)
#同样也能进行 reshape 工作:
a = np.linspace(1,10,20).reshape((5,4)) # 更改shape
print(a)
1
2
3
4
5
6
7
8
9
10
11
12
13
5、矩阵的索引与打印
import numpy as np
#一维索引
A = np.arange(3,15)
print('A = ',A)
print('A[3] = ',A[3]) # 6
#二维
A = np.arange(3,15).reshape((3,4))
print('A = ',A)
print('A[2] = ',A[2])
print('A[2][]2 = ',A[2][2])
print('A[2,2] = ',A[2,2])
print('A[1, 1:3] = ',A[1, 1:3])
print('row = ')
for row in A:
print(row)
print('column = ')
for column in A.T:
print(column)
#flatten是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。而flat是一个迭代器,本身是一个object属性。
print('A.flatten = ',A.flatten())
print('A.flat ===== 所有元素逐个打印')
for item in A.flat:
print(item)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
6、矩阵的运算
6.1 基础运算
import numpy as np
array1 = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵
array2 = np.array([[2,3,4],[3,4,5]]) #列表转化为矩阵
# 减法
array3 = array2 - array1
print(array3)
# 加法
array3 = array2 + array1
print(array3)
# 对应元素相乘
array3 = array2 * array1
print(array3)
# 对应元素乘系数
array4 = array1 * 2
print(array4)
# 对应元素次方
array4 = array1 ** 2
print(array4)
# 对应元素正弦
array4 = np.sin(array1)
print(array4)
# 比较符号
array5 = array1>2
print(array5)
# 判断矩阵是否全部为正确
print(array5.all())
# 判断矩阵是否存在正确
print(array5.any())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
6.2 点乘
import numpy as np
arr1=np.array([[1,
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~