nump模块

numpy模块

numpy是Python的一种开源的数值计算扩展库。这种库可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)。

numpy库有两个作用:

  1. 区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型
  2. 计算速度快,甚至要由于python内置的简单运算,使得其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似。

约定俗成:import numpy as np

1.创建矩阵:

创建一维的ndarray对象:arr = np.array([1, 2, 3])

创建二维的ndarray对象arr=np.array([[1, 2, 3], [4, 5, 6]])

2.获取矩阵的行列

获取矩阵的行和列构成的数组arr.shape

3.切割矩阵

切分矩阵类似于列表的切割,但是与列表的切割不同的是,矩阵的切割涉及到行和列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

比如一个数组arr,若取第一行第一列,就是arr[1,1]

取大于5的元素,返回一个数组
print(arr[arr > 5])

矩阵按运算符取元素的原理,即通过arr > 5生成一个布尔矩阵
print(arr > 5)

4.矩阵元素的替换

矩阵元素的替换,类似于列表元素的替换,并且矩阵也是一个可变类型的数据,即如果对矩阵进行替换操作,会修改原矩阵的元素,所以下面我们用.copy()方法举例矩阵元素的替换。

5.矩阵的合并

  1. 合并两个矩阵的行,注意使用hstack()方法合并矩阵,矩阵应该有相同的行,其中hstack的h表示horizontal水平的
    print(np.hstack((arr1, arr2)))

  2. 合并两个矩阵的列,注意使用vstack()方法合并矩阵,矩阵应该有相同的列,其中vstack的v表示vertical垂直的
    print(np.vstack((arr1, arr2)))

  3. 合并两个矩阵,其中axis=1表示合并两个矩阵的行
    print(np.concatenate((arr1, arr2), axis=1))

    axis=0表示合并两个矩阵的列
    print(np.concatenate((arr1, arr2), axis=0))

6.通过函数创建矩阵

  1. 构造0-9的ndarray数组print(np.arange(10))
  2. 构造一个等差数列,取头也取尾,从0取到20,取5个数
    print(np.linspace(0, 20, 5))
  3. 构造一个等比数列,从100取到1020,取5个数
    print(np.logspace(0, 20, 5))
  4. 构造3*4的全0矩阵print(np.zeros((3, 4)))
  5. 构造3*4的全1矩阵print(np.ones((3, 4)))
  6. 构造3个主元的单位矩阵print(np.eye(3))
  7. 构造一个4*4的随机矩阵,里面的元素是随机生成的
    print(np.empty((4, 4))

7.矩阵的运算

也包含+,-,*,/,%,**n

运算符 说明
+ 两个矩阵对应元素相加
- 两个矩阵对应元素相减
* 两个矩阵对应元素相乘
/ 两个矩阵对应元素相除,如果都是整数则取商
% 两个矩阵对应元素相除后取余数
**n 单个矩阵每个元素都取n次方,如**2:每个元素都取平方

8.矩阵的转置

矩阵的转置,相当于矩阵的行和列互换。arr.transpose()

arr.T

9.矩阵的逆

矩阵行和列相同时,矩阵才可逆。

np.linalg.inv(arr)

10.生成随机数

函数名称 函数功能 参数说明
rand(d0,d1,⋯,dnd0,d1,⋯,dn) 产生[0,1)内的均匀分布的随机数 dndn为第n维数据的维度
randn(d0,d1,⋯,dnd0,d1,⋯,dn) 产生标准正态分布随机数 dndn为第n维数据的维度
randint(low[, high, size, dtype]) 产生随机整数 low:最小值;high:最大值;size:数据个数
random_sample([size]) 在[0,1)内产生随机数 size为随机数的shape,可以为元祖或者列表
choice(a[, size]) 从arr中随机选择指定数据 arr为1维数组;size为数据形状

RandomState()方法会让数据值随机一次,之后都是相同的数据

rs = np.random.RandomState(1)
print(rs.rand(10))
posted @ 2019-07-12 19:57  yellowcloud  阅读(427)  评论(0编辑  收藏  举报
回顶部