自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 回溯算法的概述 & 77. 组合

回溯通常存在于递归的下面,是一种纯暴力搜索核心就是搜索问题可以抽象为树结构集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。递归就要有终止条件,所以必然是一颗高度有限的树(N叉树)。lc 77看这个概述就非常容易写出来了,题目是给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。在做这道题的时候我出了bug,原因是在循环里我一直放的是一个变量。改了一个小时,和昨天的函数名写错有异曲同工之妙。专门写篇文章强调一下

2021-12-30 12:40:04 147

原创 由leetcode39. 组合总和看搜索去重问题 & 搜索排列组合(排列组合去重总结)

由leetcode39. 组合总和看搜索去重问题 & 搜索排列组合今天一刷随想录,把组合一起做完了,有一些个人的想法,顺便好像是也思考到了排列,因为还没做排列题等做完排列再来修改这篇文章。先来看一下lc39题目给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复

2021-12-29 17:57:40 194

原创 由leetcode39. 组合总和看搜索去重问题 & 搜索排列组合

由leetcode39. 组合总和看搜索去重问题 & 搜索排列组合今天一刷随想录,把组合一起做完了,有一些个人的想法,顺便好像是也思考到了排列,因为还没做排列题等做完排列再来修改这篇文章。先来看一下lc39题目给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复

2021-12-29 17:53:59 511

原创 神经网络反向传播为什么快

神经网络反向传播为什么快为什么从后往前算梯度而不是从前往后算梯度?首先要有链式法则的认知。然后举个最简单的例子,每个神经元都会有激活函数,当系数(比如w)更新,根据链式求导法则,最终的loss对w求导可以拆解成loss对激活函数求导,然后激活函数对w(当然也不一定是直接求的)求导.这个时候你会发现无论w怎么变。你的激活函数不可能再改变了。这个时候loss对于激活函数的求导是个确定值。如果存下来,那不是需要就能用?所以假设现在求w0的偏导,从后往前求导,把后面结果存下来。当对w1求偏导的时候,loss对激

2021-07-30 10:16:07 351 1

原创 用numpy进行数据分析,numpy.mean()返回空

np.mean()返回空,可能是numpy中有空值,此时可以使用np.nanmean()求非空的平均值,其他的如下。from scipy.stats import modeage_mean = np.nanmean(ages)age_med = np.nanmedian(ages)age_mode = mode(ages)print(age_mean, age_med, age_mode)# divergence# 极差age_max = np.nanmax(ages)age_min =

2021-03-23 05:07:25 1298

原创 1-n中整数1出现的次数

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含“1”的数字有1,10,11和12,其中“1”一共出现了5次。样例输入: 12输出: 5参考了acwing邓泽军大佬的代码,理解了一下:首先,对于数字111,在百位是1的时候统计一遍,在十位是1的时候统计一遍,在个位是1的时候统计一遍。找数字之间的分界线:可以看到1x和2x的规律明显不同,可以理解为到2进位。对于一个数字abcde固定数字c :情况1:前面有0到ab-1共a

2021-02-23 06:32:57 176

原创 PCA、SVD以及SVD和协方差矩阵的关联

PCA、SVD以及SVD和协方差矩阵的关联1. 什么是PCAPCA(Principal Component Analysis) 主成分分析法是一种降维方法。顾名思义,就是提取出数据主要信息的一种方法。它会通过筛选出最重要的k个主要成分(Principal Components),然后将数据映射在这些主要成份上,来获取数据的主要信息。2. 什么是主要成分在PCA中,PC(Principal Component)是非常重要的数据,它对应于特征值从大到小排列的特征向量。我们将这些特征向量,称作主要成分。

2020-12-21 03:39:05 964

原创 砝码称重——多重背包的二进制优化

利用二进制思想:比如10 用二进制拆可以拆分为 1 2 4 3(其实三进制也可以,但是会难写的多,同样是10,三进制要 1 1 3 5,不可以是1 3 6,因为用三进制表示2的时候,是1 1!)注意这里不是1 2 4 8。我们是要写代码的,虽然是二进制表示(其实就是把大一点的数用类似二进制的方法拆分为多类),但不要拘泥于 1 2 4 8假设我们1g的砝码有s个,那我们的代码就是s - 1 - 2 - 4 - 8 ,减到不可以再减。下面是代码#include <stdio.h>

2020-09-23 18:02:20 392

原创 关于01背包空间优化的理解(二维数组转一维数组)

昨天学习了01背包,对于他的二维数组转一维数组不是很能够理解。今天专门记录一下。我们知道01背包的状态转移方程是f[i][j]=max(f[i-1][j],f[i-1][j-v[i]+w[i])其中i表示第i个物品,j表示第i个物品放上去时当前背包的体积。故j-v[i]表示的是i-1状态时背包占用的体积。那为什么一维数组的状态转移方程是f[j]=f[j-v[i]+w[i])(j从v到v[i])呢?里面的f[j]代表的是i状态下的体积是j,如何保证j-v[i]是i-1状态下的体积呢?答案就

2020-09-23 09:37:04 311

原创 砝码称重——空间优化01背包

空间优化01背包在之前的文章中我们采用二维数组去存,但实际上可以通过一维数组存。首先,我采用了另一种方式去存背包,这是动态转移方程flag[i][j] = flag[i - 1][j] + flag[i - 1][j - weight[i]];其中代表的是前i个砝码达到重量为j的状态共有flag[i][j]种方法。我个人的想法是把二维数组的最后结果都移动在一起了,可以脑补一个格子图,把最终的结果全部填在第一行的感觉。就是说用后面的状态去覆盖前面的状态。这样要求我们是倒着存的,因为如果正着存,前面

2020-09-22 16:33:41 135

原创 砝码称重问题——未经优化的01背包解法

题目连接 洛谷P2347题目描述设有1g1g1g、2g2g2g、3g3g3g、5g5g5g、10g10g10g、20g20g20g的砝码各若干枚(其总重≤1000 ),输入格式输入方式:a1,a2,a3,a4,a5,a6a_1 , a_2 ,a_3 , a_4 , a_5 ,a_6a1​,a2​,a3​,a4​,a5​,a6​(表示1g1g1g砝码有a1a_1a1​个,2g2g2g砝码有a2a_2a2​个,…,20g20g20g砝码有a6a_6a6​个)输出格式输出方式:Total=N(N表

2020-09-22 15:03:32 431

转载 Pandas学习——多级索引

https://www.cnblogs.com/zhangyafei/p/12114521.html

2020-09-14 11:27:59 171

原创 Pandas学习——空值填充

处理默认值pandas默认采用NaN作为默认值,np.nan和None也被视为默认值。python之间None可以比较,结果为True,而np.nan比较结果是false>>> None == NoneTrue>>> np.nan == np.nanFalse可以通过fillna()函数来填充默认值,如df.fillna(1)参数备注value用于填充的空值的值method{‘backfill’, ‘bfill’, ‘pa

2020-09-14 11:00:15 7286

原创 Pandas学习——索引旋转以及算术运算

索引和旋转object.ix[]支持整数和标签混合使用,但是pandas社区目前对这种语法持反对态度,转而使用严格的[]、loc、iloc语法首先生成数据对象>>> dates = pd.date_range('2020-9-14', periods=8)>>> df = pd.DataFrame(np.random.randn(8,4), index=dates, columns=['a','b','c','d'])>>> df a b c

2020-09-14 10:44:45 276

原创 pandas学习——索引对象和一些常用函数

索引对象pandas的索引对象是数据标签的容器。在创建序列或数据框的时候,数组或者其他表示数据标签的有序列会自动的转换成索引对象。>>> sa 0.694635b 0.068107c 0.302411d 0.044751a 0.858449dtype: float64>>> s.indexIndex(['a', 'b', 'c', 'd', 'a'], dtype='object')>>> s.in

2020-09-14 10:07:44 259

原创 Pandas学习——series和DataFrame的基本生成

数据结构介绍名称说明Series一维带标签的同种数据类型的数组DataFrame二维带标签的大小可变的各列数据类型可以不同的二维表格Panel三维带标签大小可变的数组可以把DataFrame看作Series的容器,把Panel看作是DataFrame的容器序列Series的生成方式是多种多样的,可以用numpy去生成一个序列>>> s = pd.Series(np.random.rand(5))0 0.3509761 0

2020-09-13 11:32:44 470

原创 Kaggle练习——Titanic

import pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineinputData = pd.read_csv('./train.csv')trainData = inputData.copy(deep = True)拷贝一份trainData用于数据处理,不动原数据。(其实好像没啥用)del trainData['PassengerId']del trainData['Cabin']del trainData['T

2020-09-12 19:53:53 324

原创 Numpy学习——排序和查找

数组的排序和查找排序sort()>>> testarray([[13, 2, 4], [13, 2, 17], [ 8, 1, 19], [19, 1, 18]])>>> test.sort()>>> testarray([[ 2, 4, 13], [ 2, 13, 17], [ 1, 8, 19], [ 1, 18, 19]])

2020-09-11 16:33:55 250

原创 Numpy学习——常用random函数

numpy生成随机数Numpy.random模块下提供了一些常用的随机函数,可以生成不同概率的随机数。函数描述rand(d0,d1…,dn)返回均匀分布的随机数randn(d0,d1…,dn)返回标准分布的随机数randint(low, high, size, dtype)返回给定开区间的随机整数random_intergers()返回闭区间的随机整数random()返回0到1区间的浮点数chioce()返回给定一维数组的随机数byte

2020-09-11 15:59:09 431

原创 Numpy学习——简单读取文件

输入与输出Numpy常用的文件是二进制文件和文本文件二进制文件save函数使用如下:>>> a = np.arange(16).reshape(4,4)>>> np.save('./temp_array', a)会生成.npy文件load函数:>>> np.load('./temp_array.npy')savez函数:可以将多个数组以非压缩的方式存进同一个二进制文件中。>>> x = np.a

2020-09-11 15:03:40 179

原创 Numpy学习——线性代数、where语句、统计函数

线性代数Numpy可以用于计算矩阵相乘、分解矩阵、求解线性方程等线性代数问题。*在numpy中表示两个数组的乘积。numpy.linalg模块中会有矩阵计算经常用到的功能,如inv()函数,用于求解矩阵的逆矩阵。可以使用solve()函数去求解线性方程组{x1+2x2=22x1−2x2=4\begin{cases}x_1+2x_2=2\\2x_1-2x_2=4\end{cases}{x1​+2x2​=22x1​−2x2​=4​>>> import numpy.lina

2020-09-11 14:37:40 165

原创 Numpy学习——复制和指代

复制和指代之前已经介绍过一些函数,有些函数是对原数组进行复制再操作,有些函数是直接对原数组进行修改,之后返回对数组的指代。一般有三种情况:完全不复制、返回指代和深度复制。完全不复制:赋值操作属于完全不复制数组的一类操作。>>> a = np.arange(6)>>> b = np.arange(6)>>> b is a False>>> b = a>>> b is a True&g

2020-09-11 11:30:49 151

原创 numpy学习——数组的常用数学函数

数组的基本操作常用的数组函数如下:函数描述add()两个数组元素相加subtract()两个数组元素相减multiply()两个数组元素相乘divide()两个数组元素相除power()以一个数组元素作为底,另一个数组元素作为指数,进行幂指数运算mod()、reminder()求余exp()、exp2()返回输入数组以e或以2为底的指数结果log()、log2()、log10()返回自然对数、以2为底的对数、以10为底的对数

2020-09-11 11:10:54 380 1

原创 Numpy学习——数组形状的改变、拆分、整合

改变数组的形状数组的形状可以改变,但是元素不可以改变。在reshape()的操作中,如果某个方向的大小设置为-1,则会根据其他方向上设定的大小来计算-1这个方向的大小。>>> a = np.range(24)>>> a.reshape([2,3,4])array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15],

2020-09-11 10:42:57 587

原创 numpy学习——数组的分片和索引以及高级索引(整数索引,布尔索引)

基本的分片和索引操作多维数组的分片操作:>>> a = np.arange(27).reshape(3,3,3)>>> aarray([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8]], [[ 9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21

2020-09-07 16:32:24 1491 1

原创 numpy学习——数组的基本运算操作

数组的基本运算操作numpy支持数组之间的±*/运算,也支持数与数组之间的运算。运算时不会创建一个新的数组,而是在原有数组基础上进行修改。举一个经常报错的例子:a = np.ones((3,3), dtype=int)b = np.ones((3,3), dtype='float64')a += b---------------------------------------------------------------------------UFuncTypeError

2020-09-07 11:41:23 738

原创 numpy学习——numpy基本介绍

1.numpyNumpy基本介绍在Numpy中,方向称作轴,轴的数目称作维。N维数组在numpy中是一个ndarray类,而python中的array只处理一维数组。以下是几个比较重要的属性。ndarray.ndim指数组的维度ndarray.shape数组的形状,n行m列的矩阵,shape为(n,m)是元组。ndarray.size数组的大小,即n*mndarray.dtype数组内元素的数据类型ndarray.itemsize占计算机内存的大小ndar

2020-09-07 11:24:08 231

原创 python查漏补缺

python查漏补缺理论上的东西脚本语言一般都是不需要编译的,是解释型语言。python则__需要编译__:会将脚本语言编译成字节码的形式。Jython:用Java编写的Python,可以使用Java中的链接库。CPython是现在用的Python。Python for .Net:.Net使用的是XML Web Services。 Python for .Net和IronPython是.net平台上的python。vim和Emacs(不学习)注释与断行大段注释 ‘’’ 或者 “

2020-08-30 16:38:20 154

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除