numpy基础及常用方法
本文简单列举了numpy中常见的一些方法,主要分为两部分:
- 简单介绍数组操作
- 线性代数部分
创建数组方法:
1 | np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) #多维数组的生成 |
1 | array([[1, 2, 3, 4], |
1 | a = np.arange(0,10,1) |
1 | (array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), |
其余的创建函数:ones, zeros, empty, eye
从字节序列创建数组:
1 | s = '1 2 3 4 5 6 7 8 9' |
1 | array([1, 2, 3, 4, 5, 6, 7, 8, 9]) |
1 | s = '1,2,3,4,5,6,7,8,9' |
1 | array([1, 2, 3, 4, 5, 6, 7, 8, 9]) |
从函数创建数组:
1 | def func(i): |
1 | array([ 0., 1., 4., 9., 16., 25., 36., 49., 64., 81.]) |
类型转换函数:
1 | x = np.array([1, 2, 2.5]) |
1 | [1. 2. 2.5] [1 2 2] |
数组重塑:
强制修改数组arr的尺寸:
1 | arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 1, 2]]) |
1 | [[1 2 3] |
1 | a = np.arange(6).reshape((3,2)) |
1 | [[0 1] |
1 | #使用reshape方法创建新尺寸数组,原数组尺寸不变,但reshape方法共享数据 |
1 | array([[0, 1, 2], |
数组索引切片及转置:
方法与列表操作相同,但通过下标范围获取的新数组和原数组共享同一块数据空间,可用arr[1:3].copy()得到副本。
索引还包括:
- 布尔型索引:可进行筛选操作,例:data[data<0] = 0 #data数组中小于0的数据置0
- 花式索引
1 | x = np.array([[1, 2], [3, 4], [5, 6]]) |
1 | [[1 2] |
一元通用函数:
1 | arr = np.array([1, 2, 3, 4.6, 5.4]) |
1 | fabs():总是返回float类型,对于非复数值fabs更快 |
未列出的函数还有:
- 各种三角函数(sin, cos, tan, arcsin, arccos, arctan…)
- 各种逻辑运算函数(logical_and, logical_or, logical_not)
- 绝对值,开平方,平方(square),exp等等
二元通用函数:
1 | x = np.array([0, 1, 2, 3, 4]) |
1 | add(): |
除此之外,还有一系列逻辑函数:
- greater
- greater_equal
- less
- less_equal
- logical_and
- logical_not
- logical_xor
矩阵乘法三种方式:
- x.dot(y)
- np.dot(x,y)
- x @ y
1 | x = np.array([[1, 2], [3, 4]]) |
1 | [[19 22] |
常用的linalg函数:
1 | from numpy import linalg as LA |
1 | [[1 2] |