本文作者:孙晓玲
文字编辑:钱梦璇
技术总编:张 邯
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数组,输出查看一下:
import numpy as npa = 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)) # 查看数据类型<class 'numpy.ndarray'>print(a.dtype) # >查看数组元素数据类型print(a.size) # 长度print(a.shape) # 形状
输出结果:

通过数据分析方法可以查看“a”的数据信息并做一些简单的描述性统计。由输出结果我们也可以发现,“a”的数据类型为“numpy.ndarray”,确实不是列表。
2
学习一个新的数据类型,首先需要知道如何查看它的属性,下面我们通过生成一个二维数组学习查看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)) # <class 'numpy.ndarray'>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数组的切片机制,这里以刚刚生成的二维数组为例。
多维数组的切片以逗号为分隔对各维度切片,在二维数组中就只有一个逗号,逗号前为行切片逗号后为列切片。现在我想得到以下四种切片结果:
1.所有行第一列;
2.第0行所有列;
3.第0列1到4行;
4.索引值能被2整除的所有行能被2整除的所有列。
为了输出结果的美观,这里使用交互式呼叫方式输出。
a[:, 1]a[0, 1:4]a[1:4, 0]a[::2,::2]
输出结果:

这样就得到切片得到我们想要的数据啦。
4
可以指定数组的行列元素个数,具体程序如下:
import numpy as npa = np.zeros((5,5)) # 创建全0数组print(a)

b = np.ones((5,2)) # 创建全1数组print(b)

更一般的,我们也可以得到全部都是指定数字的数组,例如全部是数字7,具体命令如下:
c = np.full((2,2), 7) # 创建全7数组print(c)

如果想得到单位矩阵,可用如下程序:
d = np.eye(3) # 创建单位矩阵,3行3列print(d)
类似于stata中的随机数函数,NumPy也有创建随机数的函数,程序如下:
e = np.random.random((2,2)) # 创建随机数数组print(e)
关于NumPy数组的基本内容就介绍到这里啦,希望对您有所帮助。
自科基金项目信息爬取
rename group批量修改变量名
小命令,大不同——insobs插入新值
新的一年,效率满满~(上)
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

