Data Science | Numpy基础(二)
Anaconda的基本用法 按照上篇文章,相信大家都安装好了Anaconda,有朋友在留言区留言希望出一篇关于Anaconda的使用教程,其实Anaconda的基本使用非常简单,基本无需教程。 在windows下安装好Anaconda后,在所有程序中可以看到Anaconda下有以下几个组件: Anaconda Navigator:用于管理工具包和环境的图形界面。 Anaconda Prompt:用于管理包和环境的命令行界面。 Jupyter Notebook:基于Web的交互式计算环境,用于展示数据分析的过程,并且生成容易阅读的文档。 Spyder:Python集成开发环境,布局类似于Matlab。 我们学习主要使用的是第三个Jupyter Notebook。 这里简单普及一下常用的Anaconda命令(虽然我也不经常用)。 查看软件版本号 python--version#查看Python版本 conda--version#查看conda的版 添加镜像 condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 更新conda condaupgrade--all 查看已经安装的packages condalist condainstall[packagename]#安装package,安装在默认的Python环境中 新手入门建议只安装Anaconda,可以省去很多不必要的麻烦,以上就是Anaconda的基本使用,欢迎大家在留言区补充。 Numpy索引及切片 纠正下上一篇的错误: #正确的导入方式importnumpyasnp numpy的索引方式和Python中的列表索引相似,这里主要介绍普通数组索引/切片和布尔型数组的索引/切片。 一维数组的索引/切片 一维数组的索引和切片和Python中的列表相同,索引都是从0开始,切片都是左闭右开。 importnumpyasnp ar=np.arange(20)#输出ar的第4个值 print(ar[3])#输出ar的前四个值 print(ar[:4]) >>>4 [0123] 多维数组的索引/切片 二维数组可以理解为两个一维数组横向堆叠在一起,所只要分别取对应索引即可。 importnumpyasnp ar=np.arange(16).reshape(4,4)#二维数组索引遵照先行后列(有以下两种写法)#选取第二行第二列的值 print(ar[2][2]) print(ar[2,2])#二维数组切片#取出前两行的值 print(ar[:2])#取出前两行后两列的值 print(ar[:2,2:]) >>> [[0123] [4567] [891011] [12131415]]1010 [[0123] [4567]] [[23] [67]] 三位数组的索引、切片的取值方式相当与二维数组的进化版。 importnumpyasnp ar=np.arange(12).reshape(3,2,2) print(ar)#三维数组索引遵照先维度后行再列 print(ar[2][0][1]) print(ar[2,0,1])#切片#获取第一个数组的第一行的第一列的数 print(ar[:1,:1,:1]) >>> [[[01] [23]] [[45] [67]] [[89] [1011]]] [[[0]]]99 布尔型的索引及切片 布尔型数组的使用是本片文章的重点。 #简单展示一下布尔型的一维数组长啥样 i=np.array([True,False,True]) j=np.array([True,True,False,False]) print(i) print(j) >>> [TrueFalseTrue] [TrueTrueFalseFalse] 而我们经常见到的是这样的: ar=np.arange(12).reshape(3,4) print(ar) print(ar>5) >>> [[0123] [4567] [891011]] [[FalseFalseFalseFalse] [FalseFalseTrueTrue] [TrueTrueTrueTrue]] 当我们需要筛选出ar中大于3的值,就可以使用布尔值进行筛选,如下: ar=np.arange(12).reshape(3,4) print(ar[ar>3]) >>> [4567891011] Numpy随机数 均匀分布和正态分布 以均匀分布和正态分布的方式生成随机数 #numpy.random.rand()生成一个0-1的随机浮点数或N维浮点数--均匀分布 a=np.random.rand() b=np.random.rand(4,4) print(a) print(b) >>>0.5544023939180306 [[0.463876480.973458760.120591750.7565951] [0.301929960.766332080.201077610.09315875] [0.793471180.267144040.086281580.72510313] [0.066060870.932600380.902682010.90941348]] 以正太分布的方式生成随机数 #numpy.random.randn()生成一个0-1的随机浮点数或N维浮点数--正态分布 a=np.random.randn() b=np.random.randn(4,4) print(a) print(b) >>> 0.26901442604096687 [[0.40261375-0.235411840.96607489-1.11253043] [-0.316707030.05841136-0.018625111.72597729] [0.170527991.03537825-0.943754171.32484928] [0.1327610.449505330.44131534-0.11319535]] 按照上面的写法相信大家对与.randn()和.rand()的认识还不够清晰,这里用可视化的方式展示一下: #平均分布#numpy.random.rand()生成一个0-1的随机浮点数或N维浮点数--均匀分布 data1=np.random.rand(500) data2=np.random.rand(500)#正态分布#numpy.random.randn()生成一个浮点数或N维浮点数--正态分布 data3=np.random.randn(500) data4=np.random.randn(500)importmatplotlib.pyplotasplt %matplotlibinline plt.scatter(data1,data2) plt.scatter(data3,data4) 这是随机分布的图样: 这是正态分布的图样: 可以看到正态分布和随机分布的成像还是有较大不同的,当然这里只是加深大家对.randn()和.rand()的认识,可视化在之后会进一步学习。 Numpy随机数的其他用法 #随机整数 print(np.random.randint(2))#在2-10之间生成随机整数 print((np.random.randint(2,10)))#在0-10之间生成10个整数 print((np.random.randint(10,size=10)))#在0-10之间生成包含10个元素的二维数组 print(np.random.randint(10,size=(2,5)))#在10-50之间生成包含10个元素的二维数组 print(np.random.randint(10,50,size=(2,5))) 原文发布时间为:2018-10-09 本文作者:煌金的咸鱼 本文来自云栖社区合作伙伴“咸鱼普拉思”,了解相关信息可以关注“咸鱼普拉思”。