自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 记录有益的代码片段

代码片段使用qsort排序void qsort(void* base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));参数按顺序依次是要比较的数组,数组长度,元素占用字节数,比较函数。比较函数要求是如下形式,返回值为intint cmp(const void* elem0, const void* elem1)定义cmp函数时,首先将两个参数强转为数组的类型;然后写比较规则,参照下面例子。#inc

2021-12-14 22:05:09 967

原创 收集的句子

老子曰:圣人无恒心,以百姓之心为心人生如露,大梦一十八年,天下豪杰岂不笑我辈痴绝耶?周伯通道:“……师哥当年说我学武的天资聪明,又乐此而不疲,但一来过于着迷,二来少了一副救世济人的胸怀,就算毕生勤修苦练,终究达不到绝顶之境……”王语嫣又道:“这位诸爷幼时患了恶疾,身上有些疤痕,那有什么可笑?男子汉大丈夫,第一论人品心肠,第二论才干事业,第三论文学武功。脸蛋儿俊不俊,有什么相干?”随即眉毛一扬,脸现傲色,朗声道:我一生纵横天下,灭国无数,依你说竟算不得英雄?嘿,真是孩子话所谓书生轻议冢中人,冢中笑

2021-10-31 23:50:59 211

原创 c语言杂记

c不允许把数组作为一个单元赋给另一个数组,除初始化以外,也不允许使用花括号列表的形式赋值int main(){ int a[2][2] = { 1,2,3,4 }; int b[2][2] = a;//err a = { 1,1,1,1 };//err}```c

2021-09-19 22:43:09 152

原创 pandas,numpy杂记

df加前缀df.add_prefix(‘prefix’)

2021-02-24 13:48:13 99

原创 10 groupby快速上手

10 groupby快速上手本文的目的在于指导读者快速上手groupby。在每个知识点下,我会先说明用法,再给出示例。本文只给出了基本的用法,想要获得更详尽的内容请参阅文档:Group by: split-apply-combine10.1 分组分组依据可以是:函数,会在各个索引值上被调用一次,其返回值就会被用作分组名称numpy array字典或Series列名以上类型的混合组成的列表示例In [1]: df = pd.DataFrame( ...: [ ..

2021-02-22 22:45:40 193

原创 9.使用groupby对数据分组和计算组内统计量(不完善)

9.使用groupby对数据分组和计算组内统计量经常会遇到这样的场景:首先把数据分组,然后处理下组内数据,最后把处理结果组合起来。groupby就可以满足需求。9.1 分组只要提供一个分组依据,groupby就可以对数据分组了。In [1]: df = pd.DataFrame( ...: [ ...: ("bird", "Falconiformes", 389.0), ...: ("bird", "Psittaciformes", 24.0

2021-02-08 12:35:58 2198

原创 变量的生命周期和作用域

9.2.2 自动存储持续性在默认情况下,函数中声明的函数参数和变量的存储持续性为自动,作用域为局部,没有链接性9.2.3 静态持续变量和C一样,c++也为静态存储持续性提供了3种链接性:外部链接性(可在其他文件中访问)、内部链接性(只能在当前文件中访问)和无链接性 (只能在当前函数或代码块中访问)。由于静态变量的数目在程序运行期间是不变的,因此不需要使用特殊的装置(如栈)来管理它们。编译器将分配固定的内存块来存储全部静态变量,这些变量在程序运行期间一直存在。要创建链接性为外部的静态持续变量,必须在代

2021-02-07 11:36:32 263

原创 c++头文件怎么写

9.1 单独编译c++鼓励程序员将组件函数放在独立的文件中。可以单独编译这些文件,然后将他们链接成可执行文件。如果只修改了一个文件,则可以只重新编译该文件,然后将它与其他文件的编译版本重新链接。可以把程序分为3部分:头文件:包括结构声明和使用这些结构的函数的原型。头文件一般包含类的定义、extern 变量的声明和函数的声明.源代码文件:包含与结构有关的函数的代码。源代码文件:包含调用上述函数的代码。不要把函数的定义和变量的定义放在头文件中。因为c++有单定义规则,变量只能有一次定义。如果在

2021-02-06 10:54:27 4048 2

原创 指针和c-风格字符串

指针和c-风格字符串指针和数组的特殊关系可以扩展到c-风格字符串。请看下面的代码char flower[10] = "rose";cout << flower << "s are red\n";数组名是第一个元素的地址,因此cout语句中的flower是字符‘r’的地址。cout对象认为char的地址是字符串的地址,因此他打印带地址处的的字符,然后继续打印后面的字符,直到遇到‘\0’为止。总之,如果提供一个字符的地址给cout,它将从该字符开始打印,直到"\0"为止。关键

2021-02-02 11:45:00 160

原创 指针、数组和指针加减

指针、数组和指针算数指针和数组基本等价的原因在于指针算数c++内部处理数组的方式。指针变量加1,增加的量等于它指向的类型的字节数。将指向double的指针加1后,如果系统对double使用8字节存储,则数值增加8字节。下面的例子展示了指针、数组和指针算数。指针和指针都可以通过指针和数组的方式获取数组的值。#include <iostream>int main(){ using namespace std; double wages[] = { 10000,20000,

2021-02-01 13:38:54 928

原创 指针和自由存储空间

指针的声明和初始化int ducks = 12 ;int *birddog = &ducks;指针的危险在c++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向数据的内存。为数据提供空间是一个独立的步骤,忽略这一步无疑是自找麻烦,如下所示:long *fellow;*fellow=123;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eu4993g6-1611589688413)(./指针的危险.png)]fellow确

2021-01-25 23:49:46 273

原创 二叉树的概念性质

2. 二叉树的概念二叉树是有序树,子树有左右之分,次序不能任意颠倒。即使树中结点只有一棵子树,也要区分他是左子树还是右子树。二叉树和度为2的有序树的区别:度为2的树至少有3个结点,而二叉树可以为空。度为2的有序树的孩子结点的左右次序是相对于另一孩子结点而言的,如果某个结点只有一个孩子结点,这个孩子结点就无需区分其左右次序;而二叉树无论其孩子数是否为2,均需确定其左右次序,也就是说二叉树的结点次序不是相对与另一结点而言,而是确定的。满二叉树满二叉树顾名思义就是一个满的二叉树。满二叉树有 2

2021-01-21 13:10:34 469

原创 树的基本概念和性质

1. 基本概念树中一个节结点的的孩子个数称为该结点的度,树中结点的最大度数称为树的度结点的层次从树根开始定义,根节点为第一层,他的子结点为第二层。树中两个结点的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是结点上所经过边的长度。上图结点A和K的路径长度为31.1树的性质结点数目=所有结点的度数+1 。n=n0+n1+n2+n3+n4+⋯=0n0+1n1+2n2+⋯+1n=n_0+n_1+n_2+n_3+n_4+\dotsb =0n_0+1n_1+2n_2+\dotsb +1n

2021-01-21 13:06:17 168

原创 8. 比较concat, append, merge, join

8. 比较concat, append, merge, join 连接DataFrame8.1 比较连接方向concat可以横向纵向连接对象;appned是纵向连接对象;merge和join是横向连接对象。连接对象concat,append一次可以连接多个对象,可以是多个Series、DataFrame或者2者混合merge,join一次只能连接2个append可以为DF追加行,要求行是Series,DF或字典连接方式concat左右连接时,不能指定连接键,只能使用in

2020-12-28 17:44:29 455 1

原创 7. np.where, np.argwhere, df.where, df.mask

7. np.where, np.argwhere, df.where, df.mask7.1 np.wherenumpy.where(condition[, x, y])根据条件选择x或y的元素返回。如果condition为真,返回x的元素;反之返回y的元素a = np.arange(10)aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])np.where(a < 5, a, 10*a)array([ 0, 1, 2, 3, 4, 50, 60,

2020-12-22 22:18:42 779

转载 python命名规范

1,模块命名(1)模块推荐使用小写命名,(2)除非有很多字母,尽量不要用下划线因为很多模块文件存与模块名称一致的类,模块采用小写,类采用首字母大写,这样就能区分开模块和类。2,类命名(1)类名使用驼峰(CamelCase)命名风格,首字母大写;(2)私有类可用一个下划线开头。3,函数命名(1)函数名一律小写,如有多个单词,用下划线隔开(2)类内部函数命名,用单下划线(_)开头(该函数可被继承访问)(3)类内私有函数命名,用双下划线(__)开头(该函数不可被继承访问)4,变量命令(1)

2020-12-08 16:52:29 466

原创 6. DBSCAN浮光略影

6. DBSCAN浮光略影学机器学习易陷入一个误区:以为机器学习是若干种算法(方法)的堆积,熟练了“十大算法”或“二十大算法”一切即可迎刃而解,于是将目光仅聚焦在具体算法推导和编程实现上;待到实践发现效果不如人意,则又转对机器学习发生怀疑。须知,书本上仅能展示有限的典型“套路”,而现实世界任务千变万化,以有限之套路应对无限之变化,焉有不败!现实中更多更多时候,需要根据任务特点对套路进行改造融通。算法是“死”的,思想才是“活”的。欲行此道,则务须把握算法背后的思想脉络,无论创新科研还是应用实践,皆以此为登

2020-12-07 22:51:02 160

原创 9. 闭包

9. 闭包9.1 定义:a closure is function with an extended scope that encompasses(包含) non-global variables referenced in the body of function but not defined there. It does not matter whether the function is anonymous or not ,what matter is that it can access no

2020-12-03 17:52:16 82

原创 从一个令人意外的例子看变量作用域规则

读者肯定已经很知道了什么是局部变量,什么是全局变量。大概率你也知道如果局部变量和全局变量重名,那么在本地作用域内是优先使用局部变量的。然后进一步的,本地使用全局变量,如果只是使用,不涉及到修改,那么可以直接使用全局变量;如果想在本地修改全局变量,就要在修改前使用global关键字声明。但是这还不够,请看这个例子:>>> b = 6>>> def f2(a):... print(a)... print(b)... b = 9...&g

2020-12-02 21:20:03 71

原创 7. python风格的策略模式

7. 策略模式7.1 是什么定义一系列算法,把他们封装起来,并且相互可以替换。这样在不同的上下文中就可以采用不同的算法(策略)。7.2 使用场景:如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。一个系统需要动态地在几种算法中选择一种。如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。7.3 案例分析:重构策略模式虽然设计模式与语言无关, 但这并不意味着每一个模式都能在每一门语

2020-12-02 20:15:47 165 1

原创 3. 在折线图中把个别点圈出

3. 在折线图中把个别点圈出思路是在这一点画散点图,把散点图设置为空心圆。import matplotlib.pyplot as pltimport numpy as npx,y=np.arange(5),np.arange(5)fig,ax=plt.subplots()ax.plot(x,y)ax.scatter(x[3],y[3] ,color='', marker='o', edgecolors='g', s=200)# color设为空,用edgecolors控制圆圈颜色,s控制圆圈

2020-11-27 21:35:42 1093

转载 6. functional.reduce 函数

6. functional.reduce 函数functools.reduce(function, iterable[, initializer])将两个参数的 function 从左至右积累地应用到 iterable 的条目,以便将该可迭代对象缩减为单一的值。 例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 是计算 ((((1+2)+3)+4)+5) 的值。 左边的参数 x 是积累值而右边的参数 y 则是来自 iterable 的更新值。 如果存在可选项 in

2020-11-27 11:48:17 237

原创 4. 字典进阶

4. 字典4.1 字典推导式字典推导可以从任何以键值对作为元素的可迭代对象中构造字典。推导式不止for循环,还可以加其他简单条件:In [11]: a='abcdef'In [13]: b=[i for i in range(6)]In [17]: ab=list(zip(a,b))In [18]: abOut[18]: [('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4), ('f', 5)]In [19]: d={l:d for l,d

2020-11-24 22:04:18 122

原创 enumerate可以方便的遍历列表的索引和值

enumerate(iterable, start=0)返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。 enumerate() 返回的迭代器的`__next__() 方法返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)和通过迭代 iterable 获得的值。start参数不是从列表的第start个元素开始,而是计数值从start开始。In [25]: a='abcef'In [26]: for i,j in enumerate(

2020-11-22 22:25:50 265 1

原创 sorted()函数的key参数

sorted()函数的key参数sort(*, key=None, reverse=False)key 指定带有一个参数的函数来提取或计算一个值作为比较大小的标准。下面我们自定义一个Person类,可以看到如果不传入key参数,sorted()无法排序。In [57]: class Person: ...: def __init__(self,age,name): ...: self.age=age ...: self.name=nam

2020-11-21 20:23:30 803

转载 numpy 分母为零的处理办法

当除数数组中包含0时https://stackoverflow.com/questions/26248654/how-to-return-0-with-divide-by-zerohttps://blog.csdn.net/minhuaqaq/article/details/104773022?biz_id=102&utm_term=numpy%20%E5%88%86%E6%AF%8D%E4%B8%BA0&utm_medium=distribute.pc_search_result.no

2020-11-21 16:40:26 14817 1

原创 python 中的二分查找bisect

python 中的二分查找bisect对于排序好的列表(升序,降序的不行),bisect模块可以快速查找、插入,保持升序。二分查找bisect.bisect_left(a, x, lo=0, hi=len(a))bisect.bisect(a, x, lo=0, hi=len(a))二者同样是:在 a 中找到 x 合适的插入点以维持有序,参数 lo 和 hi 可以被用于确定需要考虑的子集。不同点在于:若x已存在于a,那么bisect_lef的插入点会在已存在元素之前(也就是左边),而bisect返

2020-11-21 15:52:41 535

原创 python 中的双向队列deque

python 中的双向队列dequeclass collections.deque([iterable[, maxlen]])deque是一个线程安全,可以快速在两端操作的数据类型。如果maxlen没有指定,那么deque可以无限增长;反之,deque满了之后,再有新的元素加入时,就会从另一端删除旧元素。常用函数函数说明append(x)appnedleft(x)clear()copy()浅拷贝extend(iterable)extend

2020-11-21 11:13:32 347

原创 numpy,pandas求最大值索引

numpynumpy.argmax(a, axis=None, out=None)如果数组有多个最大值,只会返回第一个的索引。axis int, optionalBy default, the index is into the flattened array, otherwise along the specified axis.如果不给axis传值,那么默认把数组拉平,返回拉平后的索引。a=np.arange(10).reshape(5,2)a[1,1]=9print(a)#arra

2020-11-19 23:01:52 3155

原创 numpy , pandas 划分bins

numpy 中划分bins,并计算一个bin内的均值import numpydata = np.array([range(100)])bins = numpy.linspace(0, 50, 10)bins=np.append(bins,np.inf)#最后一个bin到无穷大digitized = numpy.digitize(data, bins)#Return the indices of the bins to which each value in input array belongs.

2020-11-19 21:52:08 6107 1

原创 python中使用*来初始化一个由列表组成的列表时要小心

我们经常使用*来初始化一个列表,比如:l=[1,2,3]l*3#[1, 2, 3, 1, 2, 3, 1, 2, 3]如果在 a * n 这个语句中, 序列 a 里的元素是对其他可变对象的引用的话,你就需要格外注意了, 因为这个式子的结果可能会出乎意料。 比如, 你想用my_list = [[]] * 3 来初始化一个由列表组成的列表, 但是你得到的列表里包含的 3 个元素其实是 3 个引用, 而且这 3 个引用指向的都是同一个列表。看2个例子例1:l=[['-']*3 for i in r

2020-11-17 21:34:10 304 1

转载 具名元组 namedtuple

作用命名元组赋予每个位置一个含义,提供可读性和自文档性。它们可以用于任何普通元组,并添加了通过名字获取值的能力,通过索引值也是可以的。collections.namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)可以用来构建一个带字段名的元组和一个有名字的类。函数返回一个新的元组子类,名为 typename 。这个新的子类用于创建类元组的对象,可以通过字段名来获取属性值,同样也可以通过索引和迭代获取.

2020-11-17 21:04:31 156

原创 元组拆包技巧

使用占位符‘_’处理不感兴趣的数据person=('Jack','male')name,_=personprint(name)#'Jack'用‘*’处理剩下的元素a,b,*rest=range(5)a,b,rest#(0,1,[2,3,4])在平行赋值中*args可以出现在任何位置。嵌套元组拆包city=('Tokyo','JP',36.933,(35.689722,139.691667))name, cc, pop, (latitude, longitude)=city参考

2020-11-17 20:46:12 220

原创 pandas中把字符串转为时序数据,时序数据转float

X['Time']=pd.to_datetime(X['Time'])X['UnixTime']=X.apply(lambda row:row['Time'].timestamp(), axis=1)

2020-11-17 20:13:34 482

原创 pandas中对类别属性计数、统计出现的不同类别

Series.unique()返回Series对象中唯一值的NumPy arraypd.Series([2, 1, 3, 3], name='A').unique()#array([2, 1, 3])Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)返回一个Series,记录Series对象中唯一值出现的次数。index = pd.Index([3, 1, 2, 3, 4,

2020-11-17 16:46:05 2635

原创 怎样让len()等python原生函数适用于自定义的数据类型

想要让len()等python原生函数适用于自定义的数据类型,就需要在类中实现python的特殊方法。特殊方法是双下划线开头和结尾的方法。看下面的例子:#一摞python风格的扑克牌import collectionsCard=collections.namedtuple('Card', ['rank','suit'])class FrenchDeck: ranks=[str(n) for n in range(2,11)]+list('JQKA') suits='spades d

2020-11-16 22:12:27 463

原创 python 对数组(numpy, pandas, list)中的每个元素进行操作

numpy中使用apply_along_axis:numpy.apply_along_axis(func1d, axis, arr, *args, **kwargs)In [23]: b = np.array([[8,1,7], [4,3,9], [5,2,6]])In [24]: np.apply_along_axis(sorted, 1, b)Out[24]: array([[1, 7, 8], [3, 4, 9], [2, 5, 6]])在pandas中使用

2020-11-16 20:47:05 8124

原创 按行、列连接numpy数组

我最先知道的是np.c[]可以按列连接2个数组,后来我要按行连接数组,于是我就传入axis=0,发现不行,查过文档后得知原来有专门的np.r_[]np.r_[np.array([1,2,3]), 0, 0, np.array([4,5,6])]#array([1, 2, 3, ..., 4, 5, 6])np.r_[-1:1:6j, [0]*3, 5, 6]#array([-1. , -0.6, -0.2, 0.2, 0.6, 1. , 0. , 0. , 0. , 5. , 6.

2020-11-16 20:31:33 1003

原创 python分离文件路径和文件名,文件名和后缀名

python分离文件路径和文件名,文件名和后缀名In [1]: import osIn [2]: file_path=r'E:\data\test1001.csv'In [3]: path,file=os.path.split(file_path)In [4]: pathOut[4]: 'E:\\data'In [5]: fileOut[5]: 'test1001.csv'In [6]: file_name,suffix=file.split('.')In [7]: file_

2020-11-16 20:15:30 1480

原创 matplotlib绘图,基本绘图,设置子图间距,设置折线类型,标签,设置坐标轴范围、标签,设置子图标题

基本绘图,设置子图间距,设置折线类型,标签,设置坐标轴范围、标签,设置子图标题import matplotlib.pyplot as pltimport numpy as npfrom sklearn.linear_model import LinearRegressionx1,y1=[-1,0,1],[0,0,1]x2,y2=np.arange(5),np.random.rand(5,1)x3,n_bins=np.random.randn(200,1),50x4,y4=np.random

2020-11-06 15:41:51 1300

python多线程多进程的常用操作。

python多线程多进程的常用操作。包括 1. 调用进程 2. 进程池 3. 进程通信 Pipe,Queue 4. 调用线程 5. lock 6. threading.local() 在一个线程内,递归调用函数时,传递参数显得复杂,因此把参数保存在一个字典里,只有本线程可以访问该字典,别的线程不行。

2020-10-29

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

TA关注的人

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