zoukankan      html  css  js  c++  java
  • 《利用Python进行数据分析: Python for Data Analysis 》学习随笔

    NoteBook of 《Data Analysis with Python》

    3.IPython基础

    Tab自动补齐

    • 变量名
    • 变量方法
    • 路径

    解释

    • ?解释,
    • ??显示函数源码
    • ?搜索命名空间

    %run命令

    • %run 执行所有文件
    • %run -i 访问变量
    • Ctrl-C中断执行
    • %paste可以粘贴剪切板的一切文本
    • 一般使用%cpaste因为可以改

    键盘快捷键

    魔术命令

    • %timeit 检测任意语句的执行时间
    • %magic显示魔术命令的详细文档
    • %xdel v 删除变量,并清除其一切引用
    • 注册超能云(SuperVessel Cloud)(注册网址:http://www.ptopenlab.com

    4.Numpy基础:数组和矢量计算

    ndarray:多维数组对象

    创建ndarray

    • np.array() #将输入数据转换成ndarray
    • np.asarray() #将输入转换成ndarray
    • np.zeros() zeros_like #全零数组
    • np.ones()ones_like #全一数组
    • np.empty()empty_like #创建数组只分配内存不赋值
    • np.arange() #返回 range版的ndarray
    • eye、identify #N*N单位矩阵

    ndarray类型

    • int、uint8 16 32 64
    • float 16 32 64 128
    • complex 64 128 256 浮点数表示的复数
    • bool
    • object python对象类型
    • string_ 固定长度的字符串
    • unicode_ 固定长度的Unicode类型
    • astype可以显示转换成其他类型

    数组和标量之间的计算

    批量计算

    基本的索引和切片

    • 数组切片是原始数据,对切片的任何修改都会直接修改原始数据
    • 若需要复制一个副本就需要显示的复制.copy()
    • 访问单个元素arr[0][2]=arr[0,2]
    • 注意区分1和:1 #前者表示第二行,后者表示到第一行
    • and or 在布尔型数据中无效

    花式索引

    • 花式索引就是将数据复制到新数组中
    • 转置 .T transpose swapaxes

    通用函数ufunc:元素级数组函数

    • 一元ufunc

      • abs、fabs
      • sqrt平方根
      • square平方
      • exp指数
      • log、log10、log2、log1p对数
      • sign正负号
      • ceil大于等于该值的最小整数
      • floor小于等于该值的最大整数
      • rint四舍五入到最接近的整数
      • modf小数和整数部分分别返回
      • isnan布尔型数组返回NaN非数字
      • isfinite、isinf布尔型返回有穷和无穷
      • cos、sosh、sin、sinh、tan、tanh双曲线三角函数
      • arc cos、sosh、sin、sinh、tan、tanh反三角
      • logical_not 计算not x的真值
    • 二元ufunc

      • add相加
      • subtract数组一减二
      • multiply相乘
      • divide、floor_divide除法,向下取整
      • power A B 计算A^B
      • maximum、fmax fmax会忽略NaN
      • minimum、fmin
      • mod求模
      • copysign将二数组的值的符号复制给第一个数组的值
      • greater、greater_equal、less、less_equal、equal、not_equal比较运算,产生布尔型,相当于>,>=
      • logical_and,logical_or,logical_xor & | ^

    利用数组进行数据处理

    • 用数组表达式代替循环叫矢量化
    • numpy.where=x if condition else y
    • [(x if c else y)for x,y,z in zip(x,y,c)]=np.where(c,x,y)

    数学和统计方法

    • 基本数组统计方法

      • sum 对数组中全部元素或某轴向的元素求和
      • mean 算术平均值
      • std、var 标准差和方差
      • min、max最大值和最小值
      • argmin、argmax最大最小元素的索引
      • cumsum所有元素的累计和
      • cumprod所有元素的累计积
    • 用于布尔型数组的方法

      • sum计算true的个数
      • any测试是否存在一个或多个true
      • all 检测数组中是否所有值都是true
    • 排序

      • sort
      • np.sort返回是已排序的副本
    • 数组的结合运算

      • np.unique找出数组中的唯一值并返回已排序的结果
      • intersect1d(x,y)返回有序的公共元素结果
      • union1d(x,y)返回并集的有序结果
      • in1d(x,y)返回x的元素是否包含于y的布尔型数组
      • setdiff1d(x,y)返回集合的差,x中不在y中
      • setxor1d(x,y)异或存在某一但是不同时存在2者

    数组文件的输入和输出

    • 二进制读写
      • np.save
      • np.load
      • np.savez将多个数组保存到一个压缩文件中
    • 读取文本文件
      • np.loadtxt
      • np.genfromtxt
      • np.savetxt

    线性代数

    • 矩阵乘法
      • np.dot(x,y)=x.dot(y)
    • 常用函数
      • diag 返回矩阵的对角线元素,或将一维数组转换成矩阵
      • cot矩阵乘法
      • trace对角线元素和
      • det 矩阵行列式值
      • eig特征值和特征向量
      • inv求逆
      • pinv计算矩阵的伪逆
      • qrQR分解
      • svd奇异值分解
      • solve Ax=b的解
      • lstsq Ax=b的最小二乘解
    • 随机数生成
      • numpy.random
      • seed确定随记生成数的种子
      • permutation返回一个序列的随记排列或一个随记排列的范围
      • shuffle对一个序列直接随记排列
      • rand产生均匀分布的样本值
      • randint从给定的范围内随机选取整数
      • randn产生标准状态分布的随机值
      • binomial产生二项分布的样本值
      • normal产生高斯分布的样本值
      • beta产生B分布的样本值
      • chisquare产生卡方分布的样本值
      • gamma产生gamma分布的样本值
      • uniform产生[0,1)均匀分布的样本值

    5.pandas入门

    pandas数据结构介绍

    • Series (data,index=v)

      • 一组数据和一组索引组成的一维数组
      • 看成是一个定长的有序字典
      • 可以直接通过字典创建
      • 在数值运算中会自动对齐
      • 索引可以通过直接赋值的方式修改
    • DataFrame

      • 表格型的数据结构
      • 直接传入由等长列表或np数组组成的字典
      • 可以指定列序列columns
      • 通过类似字典标记da.date或属性da['date']的方式获取一个列为Series(拥有原来df相同的索引)
      • 为不存在的列赋值时会创建一个新列
      • 嵌套字典的外层键作为列,内层作为行索引
      • 可以穿给DF的数据[二维ndarray、数组元组列表组成的字典、np的结构化数组、Series组成的字典、字典组成的字典、字典或Series组成的列表、列表或元组组成的列表、DF、np的MaskedArray]
      • index对象不可修改
    • index的方法和属性:

      • append链接另外一个index产生新的index
      • diff计算差集得到一个index
      • intersection计算交集
      • unionisin计算是否包含在参数集合中的布尔型数组
      • delete删除索引i出的元素并得到新的index
      • drop、insert、is_monotonic、is_unique、unique

    基本功能

    • 重新索引reindex:创建一个适应新索引的新对象

    • reindex的method选项

      • ffill pad前向填充
      • bfill backfill后向填充
    • reindex函数的参数

      • index索引的新序列
      • method插值方式
      • fill_value替代缺失值的
      • limit向前向后的最大填充量
      • level、copy
    • drop删除指定行或列data.drop('two')

    • 索引、选取、过滤

      • 利用标签的索引和普通的索引不同
      • obj[val]选取单列或者多列(布尔型、切片、布尔型df有奇效)
      • obj.ix[val]选取单个行或者一组行
      • obj.ix[:,val]选取单个列或列子集
      • obj.ix[val1,val2] 同时选取行和列
      • xs方法根据标签选取单行或者单列,并返回一个Series
      • icol、irow根据整数位置选取单行或者单列,并返回一个Series
      • get_value、set _value根据标签选取设置单个值
    • 算术运算和数据对齐

      • 不重叠标签NA
      • 算术方法中可以填充值
      • DF和Series可以运算,沿行进行广播
      • apply方法可以将函数运用到列或行形成的一维数组上
      • applymap,Series.map
    • 排序

      • sort_index默认是行索引升序(axis=1)列索引升序ascending=False降序
      • 按值对Series进行排序order,缺失值都在末尾
      • 给sort_index的by传名称即可按照相应的名字排
    • 排名.rank()

      • 与排序对比会增设一个排名值
      • 相同名次以method解决
      • average默认平均化
      • min、max、first
    • 索引也可以是重复的

    汇总和计算描述统计

    • 规约方法
      • axis df行用0,列用1
      • skipna跳过na值,默认是True
      • level层次化索引就根据level分组规约
      • describe返回多个列汇总信息

    count、describe、min、max、argmin、argmax、idxmin、idxmax、quantile、sum、mean、median、mad、var、std、skew、kurt、cumsum、cummin、cummax、cumprod、diff、pct_change

    • 相关系数和协方差
      • 3.x只保留了一个 items() 方法
      • Series中corr用于计算相关系数[重叠、非NA、索引对齐]
      • cov计算协方差
      • df的cov、corr会返回完整的矩阵
      • df的corrwith计算其列或行和另一个Series或df
      • unique.sort()返回一组唯一值有序数组
      • value_counts()返回一个Series各值出现的频率,pd.

    处理缺失数据

    • NA处理方法
      • dropna、fillna
      • isnull、notnull
    • 过滤缺失数据
      • dropna返回一仅含非空数据和索引值的Series=data.notnull();对于df会丢弃任何含有na的行,传入how='all'只丢弃全为NA的行;丢弃列则传入axis=1
      • thresh参数
    • 填充缺失数据
      • fillna方法参数
        • value用于填充的值或字典对象
        • method填充方法,默认ffill
        • axis默认0即行,axis=1为列
        • inplace是否产生副本
        • limit填充最大连续数量

    层次化索引

    • 能以低维度形式处理高维度数据
    • 可以通过unstack方法重新排到一个df中[stack逆运算]
    • 还可以为轴标签指定名称
    • 重排分层排序
      • swaplevel可以交换两个层级并返回新的
      • sortlevel
    • df将一个列或多个当做行索引
      • set_index(['c','d'),drop=False)
      • reset_index()

    pandas的其他话题

    • 整数索引
      • Series的iget_value
      • df的irow和icol
    • Panel数据
      • Panel中的每一项都是一个df
      • df有to_ panel方法[逆运算是to_frame]

    6.数据加载存储和文件格式

    读取文本格式的数据

    • pandas解析函数
      • read_csv从文件、url、文件型对象加载带分隔符的对象,默认分隔符是逗号,
      • read_table同上,默认分隔符是制表符 ;指定分隔符sep=','=read_csv
      • read_fwf读取定宽列格式数据
      • read_clipboard读取剪切板数据
    • read_csv/read_table
      • 可以指定索引和列名,也可传入列名列表做成多层索引
      • 当处理不固定分隔符时使用正则表达式来作为分隔符
      • skiprows跳行
      • na_values接收用于表示缺失值的字符串

    函数参数:path、sep|delimiter、header、index_col、names、skiprows、na_values、comment、parse_dates、keep_date_col、converters、dayfirst、date_parser、nrows、iterator、chunksize、skip_footer、verbose、encoding、squeeze、thousands

    • 逐块读取文本文件
      • nrows指定读取几行
      • chunksize指定逐块读取的大小
    • 将数据写出到文本文件
      • to_csv可以指定分隔符[from_csv]
      • 缺失值默认是空字符串,可以通过na_rep指定标记值
      • 默认会输出行列索引,可以通过index=False,header=False禁用
      • 也可以只输出部分列
    • 手动处理分隔符格式
      • csv
    • JSON 数据
      • json.load加载json数据
      • json.dump转换为json对象
      • pandas.to_json[from_json]
    • XML、HTML
      • findall和XPath
      • py2.x中的urllib2 =py3.x 中的urllib.request
      • The StringIO and cStringIO modules are gone. Instead, import the io module and use io.StringIO or io.BytesIO for text and data respectively.
      • ixml.objectify解析xml

    二进制数据格式

    • pandas.save和pandas.load 读写pickle形式数据
    • HDF5格式(hierarchical data format层次数据格式)
      • python中有两个接口PyTables&h5py
      • 处理海量数据要好好研究这两个接口
      • pd.ExcelFile读取Excel文件

    使用HTML和Web API

    • json、request
    • df便于分析

    使用数据库

    In python 2, zip returned a list. In python 3, it returns an iterable object. But you can make it into a list just by calling list on it.
    list(zip(*ngram))[0]=zip(*nagram)[0]

    存取MongoDB的数据

    7.数据规整化:清洗、转换、合并、重塑

    合并数据集

    • pandas内置方法合并

      • pandas.merge根据一个或多个键连接不同的df,实现数据库的连接操作
      • pandas.concat沿一条轴合并多个对象
      • combine_first将重复数据接在一起
    • pd.merge(df1,df2,on='key')

      • 不指定哪个列进行连接,默认是重叠的列名进行连接
      • 两个对象的列名不同可以分别指定
      • 默认情况merge是how='inner'结果中的键是交集,outer是并集,还有left、right
      • 多对多连接产生的是行的笛卡尔积
      • 要对多个键进行合并传入一个键的列表即可
      • merge函数参数
        • left、right、how、on、left_on、right_on
        • left_index、right_index、sort、suffixes、copy
    • 索引上的合并

      • 层次索引必须以列表的形式指明用作合并键的多个列
      • df.join按索引实现合并并且合并多个带有相同或相似的df对象;还可以传入一组df
    • 轴向连接

      • concat默认在axis=0工作,将值和索引连接到一起
      • 如果传入axis=1则结果会变成一个df
      • concat函数参数
        • objs参与连接的pd对象的列表或字典,唯一必须参数
        • axis、join、join_axes、keys、levels
        • names、verify_integrity、ignore_index
    • 合并重叠数据

      • np.where&pd.combine_first

    重塑reshape和轴向旋转pivot

    • 重塑层次化索引
      • stack 列-->行 df-->Series 默认滤除缺失值
      • unstack 行-->列 Series-->df
    • 将长格式转换成宽格式
      • pivot

    数据转换

    • 移除重复数据
      • df.duplicated()返回一个布尔型Series表示是否重复行
      • drop_duplicates返回一个移除了重复行的df;默认是判断全部列,也可以指定列;默认保留第一个值,也可以保留最后一个
    • 利用匿名函数或映射进行数据转换
      • map&lambda
    • 替换值
      • replace
    • 重命名轴索引
      • map直接修改原始数据,rename创建数据集的转换版[可以结合字典实现对部分轴索引的修改],也可inplace=True修改原数据
    • 离散化和面元划分
      • 离散化函数pd.cut&pd.qcut
    • 检测和过滤离群值
      • np.random.permutation
      • df.take
    • 计算指标/哑变量
      • 将分类变量转换为虚拟矩阵或指标矩阵
      • pd.get_dummies(prefix加前缀)结合cut

    字符串操作

    • 字符串对象方法
      • split()结合strip(修剪空白符,换行符)
      • '::'.join()
      • find[找不到返回-1]和index[找不到会引发异常]
      • count返回子字符串出现的次数
      • replace将指定字符替换成指定字符,删除就替换空字符
      • 内置字符串方法
        • count、endswith、startswith、join、index、find、rfind、replace、strip、rstrip、lstrip、split、lower、upper、ljust、rjust
    • 正则表达式
      • 通过re.compile创建regex对象可以节省大量时间如果对许多字符串应用同一个正则表达式
      • findall返回所有匹配项的列表,finditer逐个迭代返回
      • search返回第一个匹配项
      • match从字符串起始位置开始匹配,返回第一个,否则None
      • sub将匹配到的替换成指定字符串,并返回新的字符串subn前n个
      • re.IGNORECASE忽略大小写
      • split将匹配到的拆分成数段
    • pandas中矢量化的字符串函数
      • 获取矢量化的元操作:str.get;str[]
      • 矢量化的字符串方法
        • cat、contains、count、endswith、startswith、findall、get、join、len、lower、upper、match、pad、center、repeat、replace、slice、split、strip、rstrip、lstrip

    8.绘图和可视化

    matplotlib入门

    • matplotlib的实例库和文档是成为绘图高手的最佳资源
    • Figure & Subplot
      • matplotlib的图像都位于Figure对象中
      • pyplot.subplots的参数
        • nrows、ncols、sharex、sharey、subplot_kw、 **fig_wk
        • subplots_adjust调整图像间距
    • 颜色、标记和线型
      • plot(linestyle=、color=)常用颜色有缩写,任意RGB
      • 转折点的标记marker=o;drawstyle插值绘图方式
    • 刻度、标签和图例
      • 设置刻度和刻度标签
        • set_xticks选择要设置刻度的位置
        • ser_xticklables就是设置刻度的标签
        • set_xlable设置轴标签
        • set_title设置标题
      • 添加图例
        • 在添加subplot的时候传入lable
        • ax.legend|plt.legend(loc='best')自动选一个最好的地方
    • 注解或在Subplot上绘图
      • 注解可以通过text、arrow、annotate添加
      • text可以文本绘制在指定坐标
      • 在图表上添加一个图形,需要先创建一个块对象shp然后通过ax.add_oatch(shp)将其添加到subplot中
    • 图片保持Figure.savefig
      • fname、dpi、facecolor、edgecolor、format、bbox_inches
    • matplotlib配置
      • plt.rc函数配置,第一个参数是要配置的对象

    pandas中的绘图函数

    • 线形图
      • Series.plot方法默认就是线形图
        • label、ax、style、alpha、kind、logy、use_index、rot、xticks、yticks、xlim、ylim、grid
      • df.plot会在一个subplot中为各列绘制一条线并自动创建图例
        • subplots、sharex、sharey、figsize、title、legend、sort_columns
      • 要更深入需要多学matplotlib API
    • 柱状图
      • kind='bar'垂直|kind='barh'水平
      • Series索引会被用作刻度=df.行索引,列索引会作分组
      • stacked=True堆积柱状图
    • 直方图和密度图
      • hist生成直方图
      • plot kind='kde'生成密度图
      • 二者通常一起使用
    • 散布图
      • plt.scatter观察两个一维数据序列之间的关系
      • pd.scatter_matrix散布图矩阵
      • basemap地图插件
      • 图形库mayavi

    9.数据聚合与分组运算

    GroupBy分组

    • split-apply-combine
    • 分组键中的缺失值可以使结果包含在NA组了吧
    • 对分组进行迭代
    • 选取一个或一组列
    • 通过字典或Series分组,索引和分组轴要对齐
    • 通过函数进行分组
    • 将函数、数组、列表、字典、Series混合使用进行分组
    • 根据索引级别分组[层次化索引]

    数据聚合:从数组产生标量值的数据转换过程

    • 如果要使用自己的聚合函数,传入aggregate和agg方法

    • 非聚合运算的describe方法也可用

    • 优化过的GroupBy方法

      • count、sum、mean、median、std、var、min、max、prod、first、last
    • 面向列的多函数应用

      • 不同的列使用不同的函数或一次应用多个函数
      • 如果传入的是函数或者函数名,相应的列就会以函数名命名
      • 如果传入的是元组(name,function)就会以第一个参数名命名
      • 如果要对不同的列使用不同的函数,那么就向agg传入一个从列名映射到函数的字典
    • as_index=False结果返回是无索引的

    数组运算和转换

    • groupby的transform方法,会将一个函数运用到各个分组
    • apply:一般性的'拆分-应用-合并'
    • group_keys=False禁止分组键
    • 分位数quantile和桶bucket分析

    透视表和交叉表

    • 透视表pivot table根据一个或多个键并根据行、列键将数据分配到各个举行区域里
      • pd.pivot_table|df.pivot_table参数
        • margins=True aggfunc= 、values、index、columns、fill_value
    • 交叉表crosstab:用于计算分组频率的特殊透视表
      • crosstab前两参数可以是数组、Series、数组列表

    关于basemap的种种问题

    • geos始终无法安装好
    • basemap无法直接安装whl也安装不了
    • win10 64 py3.5

    时间序列

    日期和时间数据类型及工具

    • datetime、time、calendar
    • date.timedelta表示两个datetime对象之间的时间差
    • 字符串和datetime之间的相互转换
      • str和strftime可以将datetime转换成字符串
      • datetime.strptime可以将格式化字符串装换成datetime对象;解析已知格式
      • dateutil包的parser.parse方法解析所有格式;实用但不完美
      • datetime格式定义
        • %Y 四位数年 %y %m %d 两位数
        • %H 24H制 %I 12H制 %M %S
        • %w 星期几[0,6] %U 每年的第几周,星期天为界,%W,星期一为界
        • %z UTC时区偏移量 %F Y-m-d %D m/d/y
      • 特定于当前环境的
        • %a 星期几简称、%A星期全称
        • %b月份简称 %B
        • %c完整日期和时间 %p am,pm
        • %x适合于当前地区的日期格式,%X时间格式

    时间序列基础

    • pd最基本的时间序列就是以时间戳为索引的Series
    • 索引、选取、子集构造
      • 传入可以被解析成日期的字符串
      • 传入年、月即可选取数据切片
      • 可以使用字符串日、datetime、Timestamp
      • 对非唯一时间戳进行聚合使用groupby

    日期的范围、频率、移动

    • resample将时间序列转换成一个具有固定频率的时间序列
    • pd.date_range会生成指定长度的daretimeindex
    • 时间序列的基础频率
      • D日历日 B工作日 H T分 S WOM每月的星期几
    • 移动数据 pd.shift

    时区处理

    • pytz包
    • 本地化和转换
      • tz_localize、tz_convert转换到别的时区
      • Timestamp对象的转换
      • 不同时区之间的运算
    • 时期及其算术运算
      • 时期的频率转换
      • 按季度计算的时期频率
        • to_timestamp
      • 将Timestamp转换成Period[or相反]
        • to_period方法
      • 通过数组创建PeriodIndex

    重采样和频率转换

    • 重采样resample是指将时间序列从一个频率转换到另外一个频率
      • 降采样、升采样,非降非升采样
      • 方法参数
        • freq、how、axis、fill_method、closed、label、loffset、limit、kind、convention
        • OHLC重采样,open、high、low、close
        • 通过groupby进行重采样
      • 升采样和插值
      • 通过时期进行重采样

    时间序列绘图

    • pd时间序列的绘图功能比mt好
    • 移动窗口函数rolling_mean
    • 用户自定义移动窗口函数rolling_apply,能从片段中产生单个值

    性能和内存使用的注意事项

    • pandas对数据对齐和重采样进行了高度优化
    • 规则频率之间的转换优化

    金融和经济数据应用

    数据规整方面

    • 时间序列以及截面对齐
      • pandas可以在算术运算中自动对齐数据
      • 通过一组不同索引的Series构建df
    • 频率不同的时间序列的运算
      • 频率转换resample和重对齐reindex
      • 使用Period索引的两个不同频率的时间序列之间的运算必须进行显示转换
    • 时间和当前数据选取
      • at_time、between_time
      • 将Timestamp传入asof可以得到时间点最近的值(若是na的话)
    • 拼接多个数据源
      • pd.concat
      • df.combine_first

    分组变换和分析

    • 分组因子暴露
      • 因子分析是投资组合定量管理的一种技术
    • 十分位和十分位分析
      • 基于样本分位数的分析

    NumPy高级应用

    ndarray对象的内部机制

    • numpy数据类型体系

    高级数组操作

    • 向数组的reshape传入一个表示新形状的元组即可
      • 扁平化|散开
    • C[行优先&内存相邻]和Fortran[列优先&内存相邻]顺序
    • order='C' || order='F'
    • 数组的拆分和合并
      • np.concatenate可以指定轴将一个数组序列(元组或列表等)连接到一起
      • 比较方便的是np.vstack|np.hstack
      • np.split将数组沿指定轴拆分为多个数组
      • concatenate、vstack、row_stack、hstack、column_stack、dstack、split、hsplit、vsplit、dsplit
      • r_、c_
    • 元素的重复操作tile&repeat
    • 花式索引的等价函数take&put
      • take可以使用axis put只能按C顺序

    广播

    • 后缘维度的轴长相符,其中一方长度为1
    • 沿其他轴向广播
    • 利用广播机制设置数组的值

    ufunc高级应用

    • ufunc实例方法
      • reduce、accumulate、reduceat、outer
    • 自定义ufunc
      • np.frompyfunc接收一数组个函数及参数

    结构化和记录式数组

    • 定义结构化dtype,使用元组列表,字典式访问
    • 嵌套dtype和多维字段

    和排序有关的话题

    • ndarray的sort实例方法是直接排序,原始数据会消失
    • 而np.sort会创建一个已排序的副本,还可以指定排序轴
      • 二者都无法设置为降序
    • 间接排序:argsort、lexsort
    • python对象数组只能用快排排序
    • np.searchsorted在有序数组中查找元素,返回位置坐标
    • Numpy的Matrix类

    高级输入输出

    • 内存映像文件可以处理内存放不下的大文件
    • np.memmap会将大文件分成小段来读写

    性能建议

    • 将python的循环和逻辑转换成数组运算和布尔数组运算
    • 多用广播
    • 多使用数组切片避免复制数据
    • 使用ufunc
    • 考虑Cython
    • 连续内存
  • 相关阅读:
    poj3669 广搜
    检索所有课程都选修的的学生的学号与姓名
    UVA10160 Servicing Stations
    uva11205 The broken pedometer 子集生成
    poj1101 the game 广搜
    poj3009 Curling 2.0 深搜
    poj 1564 Sum It Up 搜索
    HDU 2268 How To Use The Car (数学题)
    codeforces 467C George and Job(简单dp,看了题解抄一遍)
    HDU 2267 How Many People Can Survive(广搜,简单)
  • 原文地址:https://www.cnblogs.com/cutd/p/5361782.html
Copyright © 2011-2022 走看看