用python做数据分析2|numpy库下进行数组计算的10点tips

今天是4.28号。

天气又开始变阴,雨持续了一整个月。

之前学习了用python写爬虫和python与mongodb数据库、文件之间的简单操作。想想自己还是想用python去做数据分析,或者能够在证券量化工作中用到相应的知识,所以接下来会主要学习数据分析相关的库numpy,pandas,matplotlib等,至于机器学习的库scikit-learn则等掌握了前三个库的使用后再根据需要去学习。


import numpy as np

可以认为numpy就是一个多维的列表(list):

例如
a=[[1,2,3],
   [3,4,5],]
    a.shape能够得到a是nxn维数组;
    a.dtype能够得到数组中的元素类型是什么;同时注意narray中所有元素的类型必须是一致的。
取数组a中特定位置的值也是用索引,一维直接用a[x],二维用a[x,y]即第x行第y列的数据。

(1) arange函数在numpy中用于创建等差数组,使用频率非常高。arange非常类似range函数,在没有学习numpy时在for循环中,几乎都用到了range,二者的区别仅仅在于是arange返回的是一个arr数组,而range返回的是list。

range()函数的用法:
   range(1,5) #代表从1到5(不包含5)
  [1, 2, 3, 4]
   range(1,5,2) #代表从1到5,间隔2(不包含5)
  [1, 3]
   range(5) #代表从0到5(不包含5)
  [0, 1, 2, 3, 4]

(2) 花式索引,即利用整数数组进行索引。

例如
arr=[[1,1,2,3],
     [1,4,5,6],
     [3,2,5,0],
     [2,3,1,9]]
那么arr[[1,3]]得到的结果为arr([[1,4,5,6],[2,3,1,9]])

(3) 进行矩阵计算时常用到转置(T)和内积:
arr.T,可以直接表示转置
np.dot()函数可以计算内积,如np.dot(a,a.T)

(4) arr是一个数组,有一些函数可以快速对数组中所有的元素进行相应的计算操作:
用法例子为:np.abs(arr),np.sqrt(arr)

1.PNG

对两个数组的操作为:add(x,y),multiply(x,y)等,执行方法是均是对应位置元素进行计算。
2.png

(5)条件方法 np.where(cond,x,y)三元表达式的使用,其中cond表示条件;x、y可以是单独的数字,可以是数组。在数据分析中,它常用于根据一个数组产生新的数组。

例如假设现在有两个数值数组和一个布尔型值数组:
    xarr=np.array([2,2,3,5,6])
    yarr=np.array([5,6,9,0,1])
    con=np.array([False,True,True,True,False])  
现在想根据con的值选取xarr、yarr中的值,当con中值为True时选xarr的值,否则选y的值。
用一般的方法为:
    result=[(x if c else y) for x,y,c in zip(xarr,yarr,con)]

使用np.where()则能极大提高计算效率,用法为:
    result=np.where(con,xarr,yarr)

**(6) 数学和统计方法 **
可通过sum,mean,std等方法对对整个数组或某个轴上的数据进行统计计算,通常叫做约简(reduction)。

对于axis不懂的可以直接这样理解,axis=0或没有即默认为零,就竖着看;aixs=1就横着看。

若x为一个数组使用方法为:
x.sum(), x.mean()
x.sum(axis=0或1),其中axis=0 表示按行将每一列的向量相加,axis=1表示按列将每一行的向量相加。

sum也可以用来对布尔型数组中的True值计数:
例如:arr=randn(100)
     (arr>0).sum()
3.1.PNG
3.2.png

(7) sort()排序
若x为一个数组,x.sort()默认将数组x中的元素从小到大排序。若x是多维数组,x.sort()会默认按从小到大对每一列进行排序;x.sort(1)则会从小到大对每一行进行排序。

(8) 数组的集合运算
np.unique()与python中set()的功能类似。
例若a=np.array([1,2,3,2,3,4,6])
则np.unique(a)结果为array([1,2,3,4,6]),np,unique()在去除重复元素的同时将元素从小到大进行了排序。

其他集合运算如下,注意集合运算的结果均是数组

4.png

(9) 线性代数的相关计算
这里暂时不作介绍,后面有需要用到时具体学习并补充进来

(10) 随机数生成
numpy.random模块对python中内置的random进行了补充。使用随机数生成函数时一般要加size=()的参数。

例如使用的方法为:

a). numpy.random.normal(size=(4,4))可以得到4x4维服从正太分布的数组,
其中size是normal()函数的一个参数,random的其他函数也有该参数,若该参数缺失,则默认只生成一个值.

b). randint(low,high,size=xx)
    表示从low到high范围内随机生成size个整数,且high值取不到。
注意:当high缺失或声明high=None时,将唯一的一个数作为上限。
    例如:a=np.random.randint(3,size=10)和a=np.random.randint(3,high=None,size=(2,3))
二者表达的意思是一样的。

c). random.randn(n,n)可以生成nxn维的服从正太分布的随机数据数组。

部分numpy.random函数如下:


5.png

最后再说一下reshape()函数可以把一维数组转化为自己想要的多维数组,如下:
np.random.randint(8,size=9).reshape(3,3)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容