您现在的位置是:网站首页> 编程资料编程资料
python数学建模是加深Numpy和Pandas学习_python_
2023-05-26
477人已围观
简介 python数学建模是加深Numpy和Pandas学习_python_
前言
今天我看到线性规划模型开头的介绍,特别不错,因此,我把它记录下来了,分享给大家
在工程技术、经济管理、科学研究、军事作战训练及日常生活等众多领域,人们常常会遇到各种优化问题。例如,在生产经营中,我们总是希望制定最优的生产计划,充分利用已有的人力、物力资源,获得最大的经济效益;在运输问题中,我们总是希望设计最优的运输方案,在完成运输任务的前提下,力求运输成本最小等。【针对优化问题的数学建模问题也是数学建模竞赛中一类比较常见的问题,这样的问题常常可以使用数学规划模型进行研究。】
数学规划是运筹学的一个重要分支,而线性规划又是数学规划中的一部分主要内容。很多实际问题都可以归结为“线性规划”问题。线性规划有比较完善的理论基础和有效的求解方法,在实际问题中有极其广泛地应用。特别是随着计算机技术的飞速发展,线性规划的应用在深度和广度上有了极大的提高。
上一篇文章python数学建模之Numpy 应用介绍与Pandas学习
Numpy 学习
# Numpy的基本使用 ''' Numpy提供了两种基本的对象:ndarray存储单一数据类型的多维数组; ufunc是能够对数组进行处理的函数 1-导入函数 import numpy as np 2-数组创建 2-1 array 可将列表或元组转化为ndarray数组 2-2 arange 在给定区间内创建等差数组,格式: arange(start=None, stop=None, step=None,dtype=None) 【step表示步长间隔】 2-3 linspace 在给定区间内创建间隔相等的数组,格式: linspace(start, stop, num=50, endpoint=True) 【间隔相等的num个数据,其num默认值是50】 2-4 logspace 在给定区间内生成等比数组,格式: logspace(start, stop, num=50, endpoint=True, base=10.0) 【默认生成区间[10start(次方), 10stop()次方]上的num个数据的等比数组】 以及 ones、zeros、empty和ones_like等系列函数的运用: '''
1-numpy.array
# numpy.array # array()函数,括号内可以是列表、元组、数组、迭代对象、生成器 import numpy as np print(np.array([6, 6, 6])) # 列表 print(np.array((8, 8, 8))) # 元组 print(np.array(np.array([9, 9, 9]))) # 数组 print(np.array(range(10))) # 迭代对象 / 整型 print(np.array([i**2 for i in range(10)])) # 生成器 # 创建10以内的奇数的数组: print(np.array([i for i in range(1, 10, 2)])) print(np.array([i for i in range(10) if i % 2 != 0])) # 创建10以内的偶数的数组: print(np.array([i for i in range(0, 10, 2)])) print(np.array([i for i in range(10) if i % 2 == 0])) # 列表中元素类型不相同 print(np.array([5, 2, '0'])) # ['5' '2' '0'] # 浮点型 print(np.array([3, 4, 5.2])) # 二维数组:【嵌套序列(列表、元组均可)】 print(np.array([[6, 7, 8], ('lxw', 'cw', 'wl')])) print(np.array([[6, 7, 8], ('lxw', 'cw', 'wl')]).ndim) # ndim(维度): 2 # 嵌套数量不一致:【强制转化为一维,推荐不用】 print(np.array([[6, 7, 8], ('lxw', 'cw', 'wl', 'npy')], dtype=object)) print(np.array([[6, 7, 8], ('lxw', 'cw', 'wl', 'npy')], dtype=object).ndim) # ndim(维度):1 print(np.array([[6, 7, 8], ('lxw', 'cw', 'wl', 'npy')], dtype=object).shape) # 运行结果:(2,) print(np.array([[6, 7, 8], [9, 9, 6, 9]], dtype=object)) print(np.array([[6, 7, 8], [9, 9, 6, 9]], dtype=object).ndim) # ndim(维度):1 print(np.array([[6, 7, 8], [9, 9, 6, 9]], dtype=object).shape) # 运行结果:(2,) -> 代表两行一列2-numpy.empty
# numpy.empty ''' numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组 numpy.empty(shape, dtype = float, order = 'C') 参数说明: 参数 描述 shape 数组形状 dtype 数据类型,可选 order 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序 ''' import numpy as np lxw = np.empty([3, 4], dtype=int) print(lxw) # 注意:数组元素为随机值,因为它们未初始化
3-numpy.zeros
# numpy.zeros ''' 创建指定大小的数组,数组元素以 0 来填充: numpy.zeros(shape, dtype = float, order = 'C') 参数说明: order : 'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组 ''' import numpy as np lxw = np.zeros(6) # 默认为浮点数 print(lxw) lxw2 = np.zeros((6, ), dtype=int) # 设置类型为整数 print(lxw2) # 自定义类型 lxw3 = np.zeros((2, 2), dtype=[('lxw', 'i2'), ('lxw2', 'i4')]) print(lxw3)4-numpy.ones
# numpy.ones '''创建指定形状的数组,数组元素以 1 来填充: numpy.ones(shape, dtype = None, order = 'C') ''' import numpy as np lxw4 = np.ones(8) # 默认浮点数 print(lxw4) lxw5 = np.ones([2, 2], dtype=int) print(lxw5)
NumPy 从已有的数组创建数组
1-numpy.asarray
# numpy.asarray ''' numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。 numpy.asarray(a, dtype = None, order = None) 参数说明: 参数 描述 a 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组 ''' # 将列表转换为 ndarray: import numpy as np x = [5, 2, 0] lxw6 = np.asarray(x) print(lxw6) # 将元组转换为 ndarray import numpy as np x2 = (1, 3, 1, 4) lxw7 = np.asarray(x2) print(lxw7) # 设置了 dtype 参数 import numpy as np x4 = [6, 6, 9] lxw9 = np.asarray(x4, dtype=float) print(lxw9)
2-numpy.frombuffer
# numpy.frombuffer ''' numpy.frombuffer 用于实现动态数组;接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。 格式如下: numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0) 注:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。 参数说明: 参数 描述 buffer 可以是任意对象,会以流的形式读入。 dtype 返回数组的数据类型,可选 count 读取的数据数量,默认为-1,读取所有数据。 offset 读取的起始位置,默认为0 ''' import numpy as np s = b'lxw_pro' lxw10 = np.frombuffer(s, dtype='S1') print(lxw10)
3-numpy.fromiter
# numpy.fromiter ''' numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。 numpy.fromiter(iterable, dtype, count=-1) ''' import numpy as np lst = range(6) it = iter(lst) lxw11 = np.fromiter(it, dtype=float) print(lxw11)
NumPy 从数值范围创建数组
1-numpy.arange
# numpy.arange ''' numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下: numpy.arange(start, stop, step, dtype) 根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。 参数说明: 参数 描述 start 起始值,默认为0 stop 终止值(不包含) step 步长,默认为1 dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型 ''' # 生成0和5的数组 import numpy as np a = np.arange(6) print(a) # 设置返回类型位 float import numpy as np a2 = np.arange(6, dtype=float) print(a2) # 设置了起始值、终止值及步长 import numpy as np a3 = np.arange(20, 52, 5) print(a3)
2-numpy.linspace
# numpy.linspace ''' numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下: np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 参数说明: 参数 描述 start 序列的起始值 stop 序列的终止值,如果endpoint为true,该值包含于数列中 num 要生成的等步长的样本数量,默认为50 endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True。 retstep 如果为 True 时,生成的数组中会显示间距,反之不显示。 dtype ndarray 的数据类型 ''' # 类似等差数列 import numpy as np a4 = np.linspace(1, 10, 5) print(a4) # 设置元素全部是1的等差数列 import numpy as np a5 = np.linspace(1, 1, 10) print(a5) # 将 endpoint 设为 false,不包含终止值 import numpy as np a6 = np.linspace(8, 22, 4, endpoint=False) print(a6) # 注:将 endpoint 设为 true,则会包含 22 a6 = np.linspace(8, 22, 4, endpoint=True) print(a6) # 设置间距 import numpy as np a7 = np.linspace(5, 10, 5).reshape([5, 1]) print(a7)
3-numpy.logspace
# numpy.logspace ''' numpy.logspace 函数用于创建一个于等比数列。格式如下: np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) base 参数意思是取对数的时候 log 的下标。 参数 描述 start 序列的起始值为:base ** start stop 序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中 num 要生成的等步长的样本数量,默认为50 endpoint 该值为 true 时,数列中中包含stop值,反之不包含,默认是True。 base 对数 log 的底数。 dtype ndarray 的数据类型 ''' import numpy as np a8 = np.logspace(1, 2, num=10) # 默认底数是 10 print(a8) # 将对数的底数设置为 2 import numpy as np a9 = np.logspace(0, 8, 9, base=2) print(a9)
综合运用【array、arange、linspace、lonspace】:
# 综合运用 import numpy as np ltw = np.array([3, 3, 4, 4]) # 生成整型数组 ltw2 = ltw.astype(float) # 转为浮点数 ltw3 = np.array([5, 2, 1], dtype=float) # 浮点数 print(ltw) print(ltw2) print(ltw3) # 比较类型 print(ltw.dtype, ltw2.dtype, ltw3.dtype) aa = np.array([ [2, 5, 8], [9, 6, 2] ]) print(aa) bb = np.arange(2, 9) print(bb) # 运行结果为:[2 3 4 5 6 7 8] cc = np.linspace(2, 5, 4) print(cc) # 运行结果为:[2. 3. 4. 5.] dd = np.logspace(1, 4, 4, base=2) # base控制的是几次方 print(dd) # 运行结果为:[ 2. 4. 8. 16.]
综合运用【ones、zeros、empty、ones_like】
# 综合运用【ones、zeros、empty、ones_like】 import numpy as np a = np.ones(6, dtype=int) print(a) # 运行结果为:[1 1 1 1 1 1] b = np.ones((6,), dtype=int) print(b) # 运行结果为:[1 1 1 1 1 1] c = np.ones((3, 1)) print(c) # 输出3行一列的数组 # 运行结果为:
相关内容
- python数学建模之Numpy 应用介绍与Pandas学习_python_
- python数学建模之三大模型与十大常用算法详情_python_
- Python 中的pass语句语法详析_python_
- pycharm中keras导入报错无法自动补全cannot find reference分析_python_
- python并发场景锁的使用方法_python_
- Python中的基本数据类型介绍_python_
- Python面向对象的三大特性封装、继承、多态_python_
- Pytest测试报告工具Allure用法介绍_python_
- Python必考的5道面试题集合_python_
- PyCharm创建Django项目的简单步骤记录_python_
点击排行
本栏推荐
