补充
- tile(val,(x,y))将val内容复制x行,y列。val可以使单个值,也可以是列表
- shape()查看矩阵或者数组的维数;如果是一个值,返回'()';如果存在x行,y列,返回'(x,y)';含有n个值得一维数组,返回'(n,)'。d.shape、shape(d)
- np.argsort()返回的是对一个数组按照从小到大排序的索引数组,例
arr1=np.array([6,5,-7,89,1]) arr2Index=arr1.argsort() print(arr2Index)
输出为:[2 4 1 0 3]也就是对arr1数组从小到大排序,最小的是-7,在原数组中的索引为2,最大的是89,在原数组中
的索引为3,索引返回的排序后的索引序列第一个是2,最后一个是3
————————————————此处为分割线————————————————————
l 导入numpy包
import numpy as np
l 创建数组
1. np.array
np.array接受一切序列型的对象(列表、嵌套列表、数组等),并产生一个数组,并且为这个新建的数组推断出一个较为合适的数据类型(显示说明除外)。每个ndarray对象都必有两个属性shape(数组大小)和dtype(数组类型,数组要求数据是同一类型的)
arr=np.array(n维列表) arr=np.array([1,2,3]) arr=np.array([[1,2,3],[4,5,6]]) data=[1,2,3] arr=np.array(data) |
2. 其他方式(调用前都需要加np)
zeros、zeros_like | arr=np.zeros(数组长度值)返回的全是0,长度不一样而已 arr=np.zeros((3,6))一个 三行六列的 值为0的数组 zeros_like(arr)返回和arr长度一致的,值均为0的数组 |
ones、ones_like | arr=np.ones(数组长度值)返回的全是1,长度不一样而已arr=np.zeros((3,6))一个 三行六列的 值为1的数组 ones_like(arr)返回和arr长度一致的,值均为1的数组 |
empty、empty_like | arr=np.empty() arr=np.empty((2,3,6))多数情况下返回的是为初始化的垃圾值,2*3*6数组 empty_like(arr)返回和arr长度一致的,值均为0的数组 |
np.arange(n) np.eys(n,m)n*m矩阵,对角线为1,其余为0 np.identity(n) n*n矩阵,对角线为1,其余为0 | np.arange(n)=python内置的range(n),只不过返回的是数组
|
l 数据转换
1. 显示转换
2. Arr2=arr1.astype(待转换的数据类型);arr2.astype(arr1.dtype);astype无论如何都会创建一个新数组
3. 浮点换成小数,小数后面直接省略
l 运算
1. 大小相等的数组之间的任何运算都会将运算应用到元素级
2. 数值和数组之间的运算,也是作用的数组的元素级
l 数组访问(索引和切片)
1. 标量值赋给切片时,广播
2. 切片修改会直接反映到源数组上
3. 切片想要实现复制效果,需要显示调用copy(),arr[4:6].copy()
arr3=np.array([[[0,1,2],[3,4,5]],[[6,7,8],[9,10,11]]]) 效果相同 |
4. 只有冒号’:’表示整个轴区
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]]) |
5. 通过Bool型索引选取数组中的数据,将总是创建数据副本 ,可用& | 内置的and/or无效
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]]) |
6. 花式索引:利用整数数组进行索引,将数据复制到新数组中
import numpy as np |
l 转置
1. 一二维数组,可以使用arr.T
2. 转置返回的是源数据的视图,不进行任何复制操作
3. 高维数组,transpose需要用到一个由轴编号组成的元组,才能进行转置。
4. arr.swapaxes()要求给定一对轴编号,根据编号进行轴对换
l 通用函数
对数组执行元素级运算,诸如np.arange()、np.exp()、np.add()、np.maximum()等返回一个数组
也有一些返回多个数组,如np.modf(arr),返回的就是浮点数的整数和小数两个部分的数组
import numpy as np |
l 数据处理
a1=np.arange(10) np.meshgrid()接收两个一元数组,返回两个二维矩阵 |
l Np.where()
Np.where(con,x,y)
当con为真时,取x的值,否则取y的值;x和y可以数组,也可以是数值
功能类似于 python的三元表达式:x if con else y
l 数学和统计方法
np.mean(arr)/ arr.mean | np.mean(arr)、arr.mean()求数组所有值的均值,arr.mean(axis=1),求每行的均值,arr.mean(axis=0)求每一列的均值,零长度的数组为NaN |
np.sum(arr)/ arr.sum | arr.sum()求总和,arr.sum(0)竖向求和,arr.sum(1)横向求和,零长度的数组为0 |
np.cumsum(arr) / arr.cumsum() | arr.cumsum()所有元素的累积和,arr.cumsum(0),竖向累积求和,arr.cumsum(1),横向累积求和 |
np.cumprod(arr)/ arr.cumprod() | arr.cumprod()所有元素的累积积,arr.cumprod(0),竖向累积求积,arr.cumprod()(1),横向累积求积 |
类似的还有 std()标准差、var()方差、max()最大值、min()最小值、argmax()最大值索引、argmin()最小值索引
l 用于布尔型数组的方法
Any() | any()是否存在一个或多个True(非布尔型数组,大于0都是True) |
All() | all()是否所有值都是True(非布尔型数组,大于0都是True) |
l 排序
arr.sort()排序,arr.sort(0)竖向排序,arr.sort(1)横向排序。直接修改原来的数组
arr1=np.sort(arr),返回的是已排序的副本,不影响源数组,默认按行排序
l 数组的集合运算
arr1=np.array([1,2,5,8,9,6,5,4,1,3,2]) |
l 线性代数
l 随机数生成