Numpy是一个用python实现的科学计算的扩展程序库,包括:
- 1.一个强大的N维数组对象Array
- 2.比较成熟的函数库
- 3.用于整合C/C++和Fortran代码的工具包
- 4.使用的线性代数、傅里叶变换和随机数生成函数。
1.创建numpy数组
- np.array
- np.zeros
- np.ones
- np.empty
- np.ones
- np.arange
np.array([[1,2,3],[4,5,6]],dtype=float) #直接用现有的数组创建 np.zeros((3,4)) #创建全0数组,参数是数组的形状 np.ones((3,4)) #创建全1数组,和zeros用法相同 np.empty((3,4)) #创建全空数组 np.arange(a,b,c) #创建从a到b的数组,间隔为c
2.ndrray的数据类型
-
查看数据类型
a = np.array([1,2,3],dtype='float64') a.dtype
-
转换数据类型
a = np.array([1,2,3],dtype='float64') b = a.astype(np.int32) b.dtype #int32 #a.astype()并不会改变a的数据类型
3.数组运算
numpy数组间的基本运算是一对一的,基本就是加减乘除。数组运算要求两个数据的形状相同,当形状不同的时候,就会自动触发广播机制。
数组广播
当两个形状不一样的数组进行相加,自动触发广播机制。
下边看几个广播计算的示意图:
当某一个数组的维度与另一个不同时,会自动补全缺失的维度。
4.索引与切片
-
整数索引与切片
创建一个3x4维的数组
arr = np.array([[1,2,3,1],[4,5,6,2],[7,8,9,3]])
arr[1] #[4,5,6,2] arr[0,1] # arr[:2] #[[1,2,3,1],[4,5,6,2]] arr[0:2,0:2] #[[1,2],[4,5]] arr[1,:2] #[4,5]
-
花式索引
arr[[0,2]] #获取索引维[0,2]的元素
array([[1, 2, 3, 1],
[7, 8, 9, 3]])arr[[1, 2], [1, 2]] #获取索引为(1,1)和(2,2)的元素
array([5,9])
5.数组的转置与轴对称
-
转置
arr = np.array([[1,2,3],[4,5,6]]) arr.T
-
轴对称
轴对称比较难以理解,详解可以看这篇文章
-
swapaxes
与transpose用法类似,不同点就是括号里的参数从3个改成两个(需要交换的维度)
6.numpy的通用函数
np.sqrt() #开方
np.abs() #求绝对值
np.square() #求平方
np.add(x,y) #x+y
np.multiply(x,y) #x*y
np.maximum(x,y) #
7.数组统计运算
arr = np.array([1,2,3,4])
arr.sum() #求和
arr.mean() #求平均值
arr.min() #求最小值
arr.max() #求最大值
arr.argmax() #最大值的索引
arr.argmin() #最小值的索引
arr.cumsum() #计算累计和
arr.cumprod() #计算累计乘积
np.diff(x,axis) 参考
np.floor() 向下取整
np.ceil() 向上取整
np.where 参考
8.数组排序
9.随机数模块
- np.random.rand()
np.random.rand(1,2,2) #随机生成三维数组