NumPy 是 Python 语言的一个扩充程序库,支持大量高维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。同时NumPy 是机器学习必不可少的工具之一。
常用操作主要有:
- 创建数组
- 数组运算
- 数学函数
- 数组切片和索引
- 数组形状操作
- 数组排序
- 数组统计
环境
- Python 3.6
- NumPy: 1.14.2
1、导包
import numpy as np
2、通过列表创建数组 array()
np.array([1, 2, 3]) #一维数组
np.array([(1, 2, 3), (4, 5, 6)]) #二维数组
3、0/1数组 zeros()、ones()
np.zeros((3, 3)) #3行3列
np.ones((2, 3, 4))
4、等差数组 arange() reshape()
#一维等差
np.arange(5) #array([0, 1, 2, 3, 4])
# 二维等差
np.arange(6).reshape(2, 3)
结果:
array([[0, 1, 2],
[3, 4, 5]])
5、单位矩阵 eye()
np.eye(3)
结果:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
7、等间隔数组
#一维
np.linspace(1, 10, num=6) #array([ 1. , 2.8, 4.6, 6.4, 8.2, 10. ])
8、随机数组
np.random.rand(2, 3)
array([[0.40360777, 0.74141574, 0.32018331],
[0.15261484, 0.18692149, 0.19351765]])
9、随机整数数组
np.random.randint(10, size=(2, 3)) #数值小于10
array([[2, 1, 0],
[2, 7, 5]])
10、依据函数创建数组
np.fromfunction(lambda i, j: i + j, (3, 6))
array([[0., 1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5., 6.],
[2., 3., 4., 5., 6., 7.]])
数组运算
+-*/ 加减乘除,对应位置元素
# 矩阵乘法
np.dot(A, B)
# 如果使用 np.mat 将二维数组准确定义为矩阵,就可以直接使用 * 完成矩阵乘法计算
np.mat(A) * np.mat(B)
转置
A.T
矩阵求逆
np.linalg.inv(A)
e^x
np.exp(a)
平方根
np.sqrt(a)
三次方
np.power(a, 3)
数组的切皮与索引
一维数组
a = np.array([1, 2, 3, 4, 5])
# 一维数组索引
a[0], a[-1]
# 一维数组切片
a[0:2], a[:-1]
二维数组
a = np.array([(1, 2, 3), (4, 5, 6), (7, 8, 9)])
# 索引
a[0], a[-1]
######## 切片
# 取第二列
a[:, 1]
#取第 2,3 行
a[1:3, :]
数组形状
形状(行列数)
a.shape
更改行列数
a.reshape(2, 3) #指向新对象, reshape 并不改变原始数组
# resize 会改变原始数组
a.resize(2, 3)
展平数组
a.ravel()
垂直拼合数组,摞起来
np.vstac