NumPy模块的名称是由“Numerical Python”缩写而来,这个模块是 一个运行速度非常快的数学模块,主要用于数组计算。
NumPy模块的主要特点就是引入了数组的概念。因为一维数组和列 表有相似之处,所以这里借助列表来讲解数组的基本概念。
例:
import numpy as np
a = [1,2,3,4]
b = np.array([1,2,3,4]) #创建数组的一种方式,array就是数组的意思
print(a) #输出变量a的值
print(b) #输出变量b的值
print(type(a)) #输出变量a的数据类型
print(type(b)) #输出变量b的数据类型
[1, 2, 3, 4] #列表的展现形式
[1 2 3 4] #数组的展现形式
<class 'list'> #变量a的数据类型为列表
<class 'numpy.ndarray'> #变量b的数据类型为数组
从运行结果可以看出,列表和数组有着相似的元素索引机制,唯一的区别就是数组中的元素用空格分隔,而列表中的元素用逗号分隔。那么NumPy模块为什么不直接使用列表来组织数据,而要引入数组这一新 的数据结构呢?原因有很多,这里主要讲两点。
第一,数组能很好地支持一些数学运算,而用列表来完成这些数学 运算则较为麻烦。
import numpy as np
a = [1,2,3,4]
b = np.array([1,2,3,4])
c = a*2
d = b*2
print(c)
print(d)
运行结果:
从运行结果可以看出:同样是做乘法运算,列表是把元素复制了一遍,而数组则是对每个元素都进行了乘法运算。
第二,数组可以存储多维数据,而列表通常只能存储一维数据。
import numpy as np
e = [[1,2],[3,4],[5,6]] #大列表里嵌套小列表
f = np.array([[1,2],[3,4],[5,6]]) #创建二维数组的一种形式
print(e)
print(f)
可以看到,列表e虽然包含了3个小列表,但其结构是一维的。而数组f则是3行2列的二维结构,这也是之后要学习的pandas模块的核心概念之一,因为数据处理中经常用到二维数组,即二维的表格结构。
常见方式一:np.array(列表)
常见方式二:用np.arange()
import numpy as np
#1个参数:起点取默认值0,参数值为终点,步长取默认值1,左闭右开
x = np.arange(5)
#2个参数:第1个参数为起点,第2个参数为终点,步长取默认值1,左闭右开
y = np.arange(5,10)
# 3个参数:第1个参数为起点,第2个参数为终点,第3个参数为步长,左闭右开
z = np.arange(5,10,2)
print(x)
print(y)
print(z)
例:用 np.random.randn(3)创建一个一维数组,其中包含服从正态分布(均值为 0、标准差为1的分布)的3个随机数。
import numpy as np
c = np.random.randn(3)
print(c)
①np.arange()函数和 reshape()函数
例:将包含0~11这12个整数的一维数组转换成3行4列的二维数组
import numpy as np
d = np.arange(12).reshape(3,4)
print(d)
②创建随机整数二维数组:np.random.randint()函数
import numpy as np
e = np.random.randint(0,10,(4,4))
print(e)
第2行代码中的np.random.randint()函数用来创建随机整数,括号里第1个参数0为起始数,第2个参数10为终止数,第3个参数(4,4)则表示创建一个4行4列的二维数组