> 文档中心 > 机器学习番外篇:NumPy的基本知识

机器学习番外篇:NumPy的基本知识

NumPy

  • 一、创建数组
  • 二、数组的索引与切片
  • 三、数组的基本运算
  • 四、数组维度变换
  • 五、数组合并与切分

一、创建数组

  • 导入 numpy 模块
import numpy as np
  • 创建数组:array
a = np.array([1,2,3])b = np.array([1.2,2.3,3.4])c = np.array([[1,2,3],[4,5,6]])#用中括号括住
  • 查看数据类型:dtype
a.dtypeb.dtype
  • 全0数组:zeros
np.zeros((2,3))#全用圆括号
  • 全1数组:ones
np.ones((3,4),dtype=np.int16)#全用圆括号,可以加dtypy来规定其类型
  • 随机数组:empty
np.empty([2,3])#里面用中括号
  • 创建有范围的数组:arange
np.arange(10,30,5)#从10到30,30取不到,5个数字一步
  • (0,1)内均匀分布的随机数组:random.rand
np.random.rand(3,2)
  • (0,2)内有5个数是数组:random.randint
np.random.randint(3,size=5)
  • 符合状态分布的随机数组:random.randn
np.random.randn(3)

二、数组的索引与切片

  • 一维数组
a = np.arange(0,10,1)
  • 取一维数组的第3位数:数组名+中括号
a[2]#从0开始数数
  • 取一维数组的第2个到第4个数组:数组名+中括号+中括号里用冒号隔开
a[1:4]
  • 将一维数组从后往前数:-1
a[::-1]

  • 二维数组
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
  • 取二维数组第2行第3列的数组元素:数组名+中括号
b[1,2]#从0开始数数
  • 取二维数组的第2列数据
b[:,1]#中括号里第1个数是行坐标,第2个数是列坐标,全取用":"
  • 取二维数组的第3列的前两行数据
b[:2,2]

三、数组的基本运算

  • 创建两个不同的数组
a = np.array([5,6,7,8])b = np.array([1,2,3,4])
  • 减法:-
a - b
  • 平方:**+数字
b**2
  • 正弦值:sin()
np.sin(a)
  • 逻辑运算
b < 3
  • 均值:mean
np.mean(b)
  • 方差:var
np.var(b)

线性代数运算

  • 创建两个数组
A = np.array([[1,1],[0,1]])B = np.array([[2,0],[3,4]])
  • 对应元素相乘:*
A * B
  • 矩阵相乘:.dot()
A.dot(B)
  • 矩阵求逆:linalg.inv()
np.linalg.inv(A)
  • 行列式:linalg.det()
np.linalg.det(A)

四、数组维度变换

  • 创建一个3乘4的数组
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
  • 查看数组的维度:shape
a.shape
  • 把数组转换为一维数组:ravel
a.ravel()
  • 把数组转换为 2*6 的数组:reshape()
a.reshape(2,6)
  • 数组的转置:T
a.T
  • -1维度表示 NumPy会自动计算该维度
a.reshape(3,-1)#3行,自动算有几列

五、数组合并与切分

  • 创建两个数组
A = np.array([[1,1],[0,1]])B = np.array([[2,0],[3,4]])
  • 合并数组:hstack(())
np.hstack((A,B))
  • 按列合并:vstack(())
np.vstack((A,B))

  • 创建数组
C = np.array([[1,2,3,4],[0,1,2,3],[4,3,2,1],[2,3,4,1]])
  • 切分为两个数组:hsplit()
np.hsplit(C,2)
  • 切分为两个数组:vsplit()
np.vsplit(C,2)

熟能生巧!!!