NumPy为数据分析三剑客之一,主要用于数组计算、矩阵运算和科学计算。
本章运用了大量的示意图,用例简单,力求使您能够轻松地融入NumPy的学习中。通过典型案例,让您充分理解NumPy、应用NumPy。
1.1安装
pip install numpy
NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),它们都可以用于处理行列表示的数组元素,虽然它们看起来很相似,但是在这两种数据类型上执行相同的数学运算,可能得到不同的结果。
1.2 array数组
1.2.1基本的创建
import numpy as np
np.array([1,2,3]) # 创建一个一维数组
np.array([[1,2,3],[1,2,3]]) # 创建一个二维数组
np.array([1,2,3],dtype=np.float64) # 指定为浮点数类型
n3 = np.array([1,2,5],dtype='float64') # copy = True 代表深拷贝 反之 浅拷贝
np.array(n3,copy = True)
np.array([1,2,3],ndmin=3) # 指定了最小维数为3,即至少为三位数组。
1.3 matrix 矩阵
1.3.1基本的创建
import numpy as np
# 使用np.mat()函数进行创建:
np.mat([[1,2,3],[3,4,5],[5,6,7]])
# 以0填充 3行三列矩阵
np.mat(np.zeros([3,3]))
# 创建对角矩阵使用diag() 函数
np.mat(np.diag([1,2,3]))
1.4基础案例
# 1.生成一个1,100之间的等差数列,数组长度为10?
np.linspace(1, 100, 10, dtype="int")
# 2.生成一个等差数列,公差为5,起始值为0,结束值小于30?
arr = np.arange(0, 30, 5)
# 3.生成一个等比数列,公比为4,长度为5?
arr= np.logspace(start=0, stop=3,num=5 , base=4, endpoint=True)
# 4. 创建一个3*3的数组,九宫格的中间位置值为1,其余值为0。再创建一个3*3的正太分布数组(期望为5,标准差为2),将正太分布数组中间位置的值保留,其余值设置为0.
arr = np.zeros((3, 3))
arr[1][1] = 1
arr = np.random.normal(loc=5, scale=2, size=(3, 3))
arr = np.where( arr== arr[1,1], arr, 0)
# 5.创建一个2行3列的正太分布的数组arr1,创建一个2行4列的随机数组arr2?
arr1 = np.random.randn(2,3)
arr2 = np.random.rand(2, 4)
arr3 = np.zeros((4,3))
# vstack: 垂直, hstck:水平
res_01 = np.hstack((arr1, arr2))
res_02 = np.vstack((arr1, arr3))
res_02
# 6.删除arr3的第2行?
np.delete(arr3, 3, axis=0)
# 7.使用两种方法求arr2的转置?
arr2.T
arr2.transpose()
# 8.生成一组[5,15]之间的5行4列的随机浮点型数据,并将小于10的数据设置为0,其余数据保留
arr = np.random.rand(5, 4)* 10 + 5
arr = np.where(arr > 10, arr, 0)
# 9.生成一个对角线矩阵,要求对角线上的值为长度为5,公差为2的等差数列;
arr = np.arange(1, 10, 2)
mat_1 = np.mat( np.diag(arr) )
mat_1
# 10.已知数组A和数组B,将数组AB合并成数组C;
# C矩阵
matrix([[ 1, 2, 5, 6],
[ 3, 4, 7, 8],
[ 1, 2, 9, 10],
[ 3, 4, 5, 6],
[ 1, 2, 7, 8],
[ 3, 4, 9, 10]])
A = np.mat([[1,2], [3,4]])
B = np.mat([[5,6], [7,8], [9, 10]])
res_A = np.vstack((A,A,A))
res_B = np.vstack((B, B))
res = np.hstack((res_A, res_B))
1.5小结
通过本章的学习,能够掌握NumPy的常用操作,即从数组创建到数组的基本操作和运算。对于数据统计分析来说,这些内容已经差不多了;而对于人工智能、机器学习,还需要更加深入地学习NumPy相关知识。另外,当数据量非常大时,NumPy可以带来百倍以上的速度提升。