python在处理数据时,会涉及到很多线性代数的运算,比如矩阵的计算,Nump的存在,大大简化了在使用python计算的复杂性,下面简单介绍下numpy的一些基础。
Numpy库中存在两种数据类型,数组(ndarray)和矩阵(matrix):
生成数组(ndarray):
arr = np.array([[1, 2, 3, 4, 5, 6],[2,3, 4, 5, 6, 7]])
arr = np.array((1, 2, 3, 4, 5))
arr = np.arange(5) # [0 1 2 3 4]
arr = np.linspace(0, 5, 5)
linspace(a, b , c, d) 在[a, b]中均匀的取c个数,d为False 不包含b, 默认为True
生成元素全为0的数组:
zero_arr = np.zeros((7, 7))
生成元素全为1的数组:
one_arr = np.ones((7,7))
生成单位矩阵形式的数组:
eye = np.eye(7)
生成随机数组:
random_arr = np.random.random((7, 7))
从ndarray中取值:
类似 切片,例如 random_arr 为7*7的数组
取前两行:
random_arr[:2], 其实真正的形式为 random[:2, :],即 获取前两行的所有列的元素
那前两列就为:
random_arr[:, :2], 前面的冒号不能省略
故 前两行和前两列的元素为:
random[:2, :2]
以此类推可以获取任何的形式的元素
间隔取就是这种形式:
randim[::2, ::2] 从0开始 行列都间隔一行获取元素
四则运算:
numpy的加减乘除运算和普通类型一样 直接 + - * / 就可以
arr1 = np.random.random((5, 5))
arr2 = np.random.random((5, 5))
sum = arr1 + arr2
minus = arr1 - arr2
mult = arr1 * arr2
divid = arr1 / arr2
值得注意的是,四则运算都是对应位置元素之间的运算,特别是乘法,要和矩阵乘法区分,由于是对应元素,故相互运算的两个数组的尺寸即shape 要相同。
矩阵乘法运算要使用 dot
arr1.dot(arr2)
numpy 数组的属性:
简单介绍几个,可以通过dir 查看所有属性
arr.ndim 数组的维度
arr.size 数组的大小
arr.itemsize 数组的一个元素所占用的字节
arr.nbytes 数组所有元素所占用的字节