参考链接: Python中的numpy.tanh
1、NumPy简介
NumPy是高性能科学计算和数据分析的基础包,计算速度要比python自带的函数快很多,非常好用。一般不需要安装,装Python就自动装了,如果需要:
pip3 install numpy
然后导出
import numpy as np
2、常用方法
2.1最常用的
2.2更多
array.shape & array的规格 array.ndim 数据的维数 array.dtype &array的数据规格 numpy.zeros(dim1,dim2) &创建dim1dim2的零矩阵 numpy.arange(start, stop, step, dtype = None) 返回一维的数组 numpy.eye(n) /numpy.identity(n) &创建nn单位矩阵 numpy.array([…data…], dtype=float64 ) 转换数据类型 array.astype(numpy.float64) &更换矩阵的数据形式 array.astype(float) &更换矩阵的数据形式 array * array &矩阵点乘 array[a:b] &一维数据切片 array.copy() &得到ndarray的副本,而不是视图 array [a] [b]=array [ a, b ] &两者等价 name=np.array([‘bob’,‘joe’,‘will’]) res=name==’bob’ res= array([ True, False, False], dtype=bool) data[True,False,……] 索引,只索取为True的部分,去掉False部分 通过布尔型索引选取数组中的数据,将总是创建数据的副本。 data[ [4,3,0,6] ] 索引,将第4,3,0,6行摘取出来,组成新数组 numpy.reshape(a,b) 将ab的一维数组排列为ab的形式 array([a,b,c,d],[d,e,f,g]) 返回一维数组,分别为[a,d],[b,e],[c,f],[d,g] array.T &array的转置 numpy.random.randn(a,b) & 生成a*b的随机数组 numpy.dot(matrix_1,matrix_2) &矩阵乘法 array.transpose( (1,0,2,etc.) ) & 对于高维数组,转置需要一个由轴编号组成的元组
3、ndarray创建以及数据类型
3.1 ndarray创建
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数 linspace() 类似arange(),第三个参数为数组长度 zeros() 根据指定形状和dtype创建全0数组 ones() 根据指定形状和dtype创建全1数组
**empty()**
根据指定形状和dtype创建空数组(随机值)
**eye()**
根据指定边长和dtype创建单位矩阵
3.2 数据类型
ndarray数据类型:dtype: 布尔型:bool_ 整型:int_ int8 int16 int32 int64 无符号整型:uint8 uint16 uint32 uint64 浮点型:float_ float16 float32 float64 复数型:complex_ complex64 complex128
4、Numpy索引和切片
4.1普通索引
1 数组和标量之间的运算: 可以直接进行加减乘除的运算(对每一个元素进行) a 1 a*3 1//a a0.5 2 同样大小数组之间的运算: a b a/b ab 3 数组的索引: 一维数组:a[5] 多维数组:a[2][3]或a[2,3] 4 数组的切片: 一维数组:a[3:6],a[:5] 多维数组:a[3:6,1:7],a[:,1:7] 注意:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法:copy()】
4.2 布尔索引
1 给一个数组,选出数组中所有大于5的数? a[a>5]
2 给一个数组,选出数组中所有大于5的偶数? a[(a>5)&(a%2==0)]
3 给一个数组,选出数组中所有大于5的数和偶数 a[(a>5)|(a%2==0)]
4.3 花式索引
1 对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组? 答案:a[[1,3,4,6,7]]
2:对一个二维数组,选出其第一列和第三列,组成新的二维数组? 答案:a[:,[1,3]]
5、NumPy:通用函数以及缺失值表示
5.1一元函数
numpy.sqrt(array) 平方根函数
numpy.exp(array) e^array[i]的数组
numpy.abs/fabs(array) 计算绝对值
numpy.square(array) 计算各元素的平方 等于array**2
numpy.log/log10/log2(array) 计算各元素的各种对数
numpy.sign(array) 计算各元素正负号
numpy.isnan(array) 计算各元素是否为NaN
numpy.isinf(array) 计算各元素是否为NaN
numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数
numpy.modf(array) 将array中值得整数和小数分离,作两个数组返回
numpy.ceil(array) 向上取整,也就是取比这个数大的整数 (如果是整数就取本身)
numpy.floor(array) 向下取整,也就是取比这个数小的整数
numpy.rint(array) 四舍五入
numpy.trunc(array) 向0取整
numpy.cos(array) 正弦值 numpy.sin(array) 余弦值 numpy.tan(array) 正切值
5.2 二元函数:add, substract, multiply
numpy.add(array1,array2) 元素级加法
numpy.subtract(array1,array2) 元素级减法
numpy.multiply(array1,array2) 元素级乘法
numpy.divide(array1,array2) 元素级除法 array1/array2
numpy.power(array1,array2) 元素级指数 array1^array2
numpy.maximum/minimum(array1,aray2) 元素级最大值
numpy.fmax/fmin(array1,array2) 元素级最大值,忽略NaN
numpy.mod(array1,array2) 元素级求模
numpy.copysign(array1,array2) 将第二个数组中值得符号复制给第一个数组中值
numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2) 元素级比较运算,产生布尔数组
numpy.logical_end/logical_or/logic_xor(array1,array2) 元素级的真值逻辑运算
5.3 缺失值表示
numpy里有缺失值的表示方法
m=np.nan
m==m
np.isnan(m)
用~方法删除缺失值:
d=np.array([m,1,3,0])
d[~np.isnan(d)]
六、NumPy:数学和统计方法
常用函数:
c = np.array([1.1,-2.9,3,4.6,5,4,7,8,-9.7,10])
sum 求和 cumsum 求前缀和 mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
七、NumPy:随机数生成
随机数生成函数在np.random子包内 常用函数:
rand 给定形状产生随机数组(0到1之间的数) randint 给定形状产生随机整数
choice 给定形状产生随机选择 shuffle 与random.shuffle相同
uniform 给定形状产生随机数组
部分代码
需要完整代码可评论。
import numpy as np
x=np.array([[1.0,0.0,0.0],[0.,1.,2.]]) #定义了一个二维数组,大小为(2,3)
x
np.array([[1., 0., 0.],
[0., 1., 2.]])
x.ndim #数组维度数
2
x.shape #数组的维数,返回的格式(n,m),其中n为行数,m为列数
(2, 3)
x.size #数组元素的总数
6
x.dtype #数组元素类型
np.dtype('float64') #64位浮点型
x.itemsize #每个元素占有的字节大小
8
x.data #数组元素的缓冲区
'''索引'''
a = np.array([1,2,3,4,5,4,7,8,9,10])
a[a>5&(a%2==0)] #注意加括号,不加括号错误,如下
#输出:array([ 1, 2, 3, 4, 5, 4, 7, 8, 9, 10])
a[(a>5)&(a%2==0)]
b = np.array([1,-2,3,4,5,4,7,8,-9,10])
np.sign(b)
np.modf(b)[0]#返回两个数组
c = np.array([1.1,-2.9,3,4.6,5,4,7,8,-9.7,10])
np.ceil(c)
np.floor(c)
#5.2
np.add(b,c)
np.subtract(b,c)
np.multiply(b,c)
np.maximum(b,c)
np.fmax(b,c)
np.mod(b,c)
np.logical_and(b,c)
#5.3
m=np.nan
m==m
np.isnan(m)
d=np.array([m,1,3,0])
d[~np.isnan(d)]
'''6'''
c = np.array([1.1,-2.9,3,4.6,5,4,7,8,-9.7,10])
np.sum(c)
np.cumsum(c)
np.mean(c)
np.argmin(c)
'''7'''
np.random.rand(3,2)
np.random.randint(3,4)
np.random.choice(3,4)