python
dahehe_
仅靠浅尝辄止永远不会发现事物内在的美
展开
-
动态规划——状态转移方程
DP问题的核心即确定动态转移方程。(1)寻找变量,确定子问题。DP表一般为二维,故需要两个变量。(2)寻找总问题与子问题迭代关系,确定中间值、迭代值例1:有5个物品,其重量分别是{2, 2, 6, 5, 4},价值分别为{6, 3, 5, 4, 6},背包的容量为10,计算背包所能装入物品的最大价值。(1)寻找变量在这个问题中,每个物品所对应的重量与价值是确定的。故将物品数量与可分配容量作为变量。总问题转化为在前5件物品中挑选容量不超过10的物品,使价值最大。子问题转化为原创 2022-01-18 14:04:53 · 8508 阅读 · 0 评论 -
最长子序列——动态规划
动态规划算法通常用于求解具有某种最优性质的问题。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用原创 2022-01-16 15:13:07 · 376 阅读 · 0 评论 -
最长子字符串的长度——分治法
确定递推方程:假如S1的最后一个元素与S2的最后一个元素相等,那么S1和S2的LCS就等于 {S1减去最后一个元素} 与 {S2减去最后一个元素} 的 LCS 再加1。假如S1的最后一个元素与S2的最后一个元素不等,那么S1和S2的LCS就等于 : {S1减去最后一个元素} 与 S2 的LCS, {S2减去最后一个元素} 与 S1 的LCS 中的较大值。def lcs(a, b, i, j): if i < 0 or j < 0: return 0原创 2022-01-15 22:06:11 · 578 阅读 · 0 评论 -
计数排序
要理解计数排序,就必须要了解什么是计数,以及为什么只适用于整数。可以将排序问题拆分为一下两个子问题:(1)如何确定原始数组内元素的排位次序并建立排序数组与其对应?即101→1,103→5....① 原始数组内元素是不连续的,那如何将不连续的元素与排序数组一一对应呢。这里通过 元素值-最小元素值=计数数组下标 的方法确定计数数组,计数数组下标为【0,max-len+1】。统计次数作为其元素值,不存在的元素值默认为0。原始数组计数数组② 如图所示,计数数组的下标从原始数组原创 2022-01-14 18:41:19 · 165 阅读 · 0 评论 -
深入理解递归
什么是递归?在函数中带着新参数调用函数自身,等同于在原来的基础上不断“向下/向内”开辟新的内存空间。注意:到内部调用函数, 以下的代码不会被执行,而是暂停阻塞。用递归可以解决的问题都能用循环解决。循环中存在起始值与迭代值,递归中对应的是什么呢?起始值可以对应为触发函数返回值的第一个值。而迭代值则对应为函数的返回值,返回值中调用函数自身,即可实现迭代。可以用一幅图直观的理解‘递’与‘归’,递——执行函数;归——得到返回值退出函数(1)计算阶乘def factorial(n原创 2022-01-14 13:33:03 · 143 阅读 · 0 评论 -
插入排序
插入排序 (python)原创 2022-01-13 16:25:59 · 112 阅读 · 0 评论 -
冒泡排序
冒泡排序(python)原创 2022-01-13 13:36:12 · 295 阅读 · 0 评论 -
选择排序
选择排序(python)原创 2022-01-13 11:39:45 · 80 阅读 · 0 评论 -
二分查找
(1)查找一个数def search(nums, target): left = 0 right = len(nums) - 1 while left <= right: mid = (left + right) // 2 if nums[mid] == target: return mid elif nums[mid] > target: right = mid - 1原创 2022-01-13 08:43:32 · 85 阅读 · 0 评论 -
Python集合内置函数
创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典集合相比于其他迭代序列,可以实现‘+’(左右差集),‘-’,并,交四个特殊功能(1)set.add()给集合添加元素fruits = {"apple", "banana", "cherry"}fruits.add('orange')>>>{'cherry', 'orange', 'apple', 'banana'}(2)set.clear()移除集合所有元素(3)set....原创 2022-01-12 14:00:43 · 368 阅读 · 0 评论 -
Python元组常用内置函数
(1)min() 返回元素最小值(2)max() 返回元素最大值(3)len() 返回长度(4)tuple() 将可迭代对象转换为元组原创 2022-01-11 21:56:21 · 798 阅读 · 0 评论 -
Python字典常用内置函数
(1)dict.clear()删除字典内所有元素(2)dict.copy()返回一个字典的浅复制(3)dict.fromkeys()dict.fromkeys(seq[, value])创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。seq = ('1', '2', '3')dict1 = dict.fromkeys(seq, 10)>>>{'1': 10, '2': 10, '3': 10}(4)dict原创 2022-01-11 18:14:36 · 1056 阅读 · 0 评论 -
Win10安装配置Tensorflow-gpu全教程
三步配置Tensorflow,适合小白纯萌新原创 2022-01-11 13:34:04 · 1177 阅读 · 2 评论 -
Python 列表常用内置函数
(1) list.append() 在列表末尾添加新的对象aList = [123, 'xyz', 'zara', 'abc']aList.append(2009)>>>[123, 'xyz', 'zara', 'abc', 2009] 如果插入值为列表,可能会出现不符合预期的结果aList = [123, 'xyz', 'zara', 'abc']aList.append([2009, 'csdn', 'lzh'])>>>[123...原创 2021-12-26 10:28:09 · 1055 阅读 · 0 评论 -
Numpy入门——选取数据
1、 单个元素索引1、1 一维数组x = np.arange(1, 13)print(x[1])21、2 多维数组x = np.arange(1, 13).reshape(3, 4)print(x[1])print(x[1][1]) #x[1,1][5 6 7 8]62、 切片索引2、1 多维数组可以用冒号代替某一行/列的所有值。x = np.arange(1, 13).reshape(3, 4)print(x[2, :])print(x[:,原创 2021-10-06 21:49:32 · 1101 阅读 · 0 评论 -
Numpy入门——构建数组
1、将python列表或元组对象转化为Numpy数组1、1 列表print(np.array([1, 3, 5, 7]))1、2 元组print(np.array((1, 3, 5, 7)))[1 3 5 7]1、3 混合print(np.array([[1, 2], [3, 5], (4, 7)]))[[1 2] [3 5] [4 7]]2、原生数组2、1 zero()/ones()创建一个指定形状用0或1填充的数组,默认的dtype是float6原创 2021-10-06 15:18:21 · 153 阅读 · 0 评论 -
Pandas入门——数据类型
1、SeriesdtypePandas 用object存储字符串,当对象单列中含多种类型的数据时,该列的数据类型通常为 object。s = pd.Series([1, 3, 'a', 'foo', 'True'], index=['b', 'c', 'a', 'd', 'e'])print(s.dtype)object当与其他类型合并时,会强制向上转型,如从int变为float。s1 = pd.Series([1, 3, 2, 5, 9.0], index=['b', ..原创 2021-10-01 10:42:13 · 559 阅读 · 0 评论 -
Pandas进阶——操作数据
1、重置索引1、1 Series1、1、1 自定义索引s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])print(s.reindex(['e', 'a', 'c', 'b', 'g']))e -1.019419a -1.969583c -0.622471b 0.018110g NaNdtype: float641、1、2 与其他对象对齐s = pd.原创 2021-09-29 00:21:39 · 107 阅读 · 0 评论 -
Pandas入门——Apply()/Agg()/Transform()
函数作为一个对象,能作为参数传递给其它函数,apply()所接受的参数就包含函数,是所有函数中自由度最高的函数。功能是自动遍历整个Series或者DataFrame, 对每一个元素运行指定的函数。DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)1、系统函数1、1 引用numpy系统函数轴标签与行对齐,遍历每一行的每一个元素运行给定函数。df = pd....原创 2021-09-28 00:43:37 · 391 阅读 · 0 评论 -
Pandas入门——基础用法
1、Head与Tail默认显示5条数据,head()从头截取,tail()从尾截取。long_series = pd.Series(np.random.randn(100))print(long_series.head(3))0 -1.0328641 0.7697292 0.327083dtype: float64print(long_series.tail(3))97 -0.70751298 0.64968599 -0.497407d原创 2021-09-23 14:52:41 · 208 阅读 · 0 评论 -
Pandas入门——操作数据
1、Series1、1 向量操作print(df * 2) # df + dfprint(np.exp(df))a 0b 2c 4dtype: int64a 1.000000b 2.718282c 7.389056dtype: float64Pandas中数据间的操作会自动对齐标签,如果数据不匹配则返回NaN。print(df[1:] + df[:-1])a NaNb 2.0c NaNdtyp.原创 2021-09-14 17:11:42 · 351 阅读 · 0 评论 -
Pandas入门——选取数据
1、Series1、1 下标或标签作为索引1、1、1 选择一行:dict = {'a': 0, 'b': 1, 'c': 2}df = pd.Series(dict)print(df)print(df[0])print(df['a'])a 0b 1c 2dtype: int6400想要显示带索引(标签)的某一行数据时,需要内部再嵌套一个[] 。print(df[[0]])print(df[['a']])a 0dtype: in原创 2021-09-14 00:18:29 · 2615 阅读 · 0 评论 -
Pandas入门——构造数据
一、Series1、np.random.randn(m,n)/np.random.rand(m,n)生成的是一个m行n列的随机多维数组。index是行标签,默认为[0,1,...,len(data)-1]。df = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])a -2.254714b -0.093877c 0.003537d -0.753373e 1.270707dty.原创 2021-09-13 10:20:36 · 479 阅读 · 0 评论