本文作者:孙晓玲
文字编辑:钱梦璇
技术总编:张 邯
NumPy是短语“Numerical Python”的缩写,NumPy库是一个功能强大的Python库,主要用于对多维数组进行计算,其提供了大量的库函数和算法,帮助程序员轻松地进行数值计算。作为一个第三方库,NumPy库在使用之前需要提前安装,最简单的方式就是在命令提示符窗口键入“pip install numpy”。
NumPy库中的矩阵模块为ndarray(数组)对象。调用NumPy数组的array函数的基本语法如下:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
各参数的含义如下表所示:
1
生成NumPy数组
我们先生成一个NumPy数组,输出查看一下:
import numpy as np a = np.array([1,2,3,4,5,6,7,8,9,10]) print(a)
输出结果:
输出的结果为类似列表的形式,但明显看出不同于列表,列表的元素之间是由逗号分隔,输出结果的元素之间以空格分隔。
我们可以对生成的数组用数据方法查看其属性,这些方法对一般的数据类型都是通用的。
a = np.array([1,2,3,4,5,6,7,8,9,10]) print(a.sum()) #计算总和print(a.min()) #求最小值print(a.max()) #求最大值print(a.cumsum()) #计算累计和print(type(a)) # 查看数据类型print(a.dtype) # >查看数组元素数据类型print(a.size) # 长度print(a.shape) # 形状
输出结果:
通过数据分析方法可以查看“a”的数据信息并做一些简单的描述性统计。由输出结果我们也可以发现,“a”的数据类型为“numpy.ndarray”,确实不是列表。
2
NumPy数组属性
学习一个新的数据类型,首先需要知道如何查看它的属性,下面我们通过生成一个二维数组学习查看NumPy数组属性的一些方法及属性含义。
a = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28 ,29, 30], [31, 32, 33, 34, 35]])print(type(a)) # NumPy数组实际上被称为ndarrayprint(a.dtype) # int32print(a.size) # 25print(a.shape) # (5, 5) 数组的形状是它有多少行和列print(a.itemsize) # 4print(a.ndim) # 2print(a.nbytes) # 100
itemsize属性是每个元素占用的字节数。这个数组的数据类型是int32,一个int32中有32位,一个字节中有8位,除以32除以8,你就可以得到它占用了多少字节,在本例中是4(因电脑而异)。ndim 属性是数组的维数,这里是二维数组。nbytes 属性是数组中的所有数据消耗掉的字节数,一共25个元素,每个元素占4个字节,一共占4*25=100个字节。
3
NumPy数组切片
往往我们在使用数据的时候并不是对整个数据进行操作,我们需要的是满足一定条件的数据,所以数据切片在数据清洗中起着至关重要的作用,接下来将为大家介绍NumPy数组的切片机制,这里以刚刚生成的二维数组为例。
多维数组的切片以逗号为分隔对各维度切片,在二维数组中就只有一个逗号,逗号前为行切片逗号后为列切片。现在我想得到以下四种切片结果:
1.所有行第一列;
2.第0行所有列;
3.第0列1到4行;
4.索引值能被2整除的所有行能被2整除的所有列。
为了输出结果的美观,这里使用交互式呼叫方式输出。
a[:, 1]a[0, 1:4]a[1:4, 0]a[::2,::2]
输出结果:
这样就得到切片得到我们想要的数据啦。
4
常用快捷NumPy数组函数现在为大家介绍几个常用的快捷生成NumPy数组的函数。1.全零数组
可以指定数组的行列元素个数,具体程序如下:
import numpy as npa = np.zeros((5,5)) # 创建全0数组print(a)
得到了一个5×5的全零数组,输出结果如下:2.全一数组有时候,我们需要一个全一数组,具体程序如下:
b = np.ones((5,2)) # 创建全1数组print(b)
得到了一个5×2的全一数组,输出结果如下:3.全指定数字数组
更一般的,我们也可以得到全部都是指定数字的数组,例如全部是数字7,具体命令如下:
c = np.full((2,2), 7) # 创建全7数组print(c)
得到了一个2×2的全部是数字7数组,输出结果如下:4.单位矩阵数组
如果想得到单位矩阵,可用如下程序:
d = np.eye(3) # 创建单位矩阵,3行3列print(d)
得到单位矩阵如下:5.随机数数组
类似于stata中的随机数函数,NumPy也有创建随机数的函数,程序如下:
e = np.random.random((2,2)) # 创建随机数数组print(e)
得到2×2的随机得到单位矩阵如下:
关于NumPy数组的基本内容就介绍到这里啦,希望对您有所帮助。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!往期推文推荐
“个性化”sortobs命令,教你实现排序自由
携手战疫,我们在行动
恭贺新春,平安顺遂|各省疫情关注度地图
过年观影指南(二)
过年观影指南(一)
egenmore隐藏功能——进制转换
相遇insobs,如暗室逢灯
数据可视化之地理坐标系
SFI:Stata与Python的数据交互手册(一)Stata模拟构建朋友圈一个粉丝的疑惑——local和scalar新的一年,效率满满~(下)
自科基金项目信息爬取
rename group批量修改变量名
小命令,大不同——insobs插入新值
新的一年,效率满满~(上)
圆蛋快乐BvD最后一弹——宏观数据宝典关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。投稿邮箱:statatraining@投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。