# 基础包NumPy
import numpy as np
ndarry:一种多维数组对象
data = np.random.randn(2,3) 生成2行3列的随机数组
shape是两行三列 dtype是float64
np.array(对象) 可以把list或者多个list 或者字典转换成数组
np.zeros(10) np.zeros((2,3))
zeros:全是0 ones:全是1 empty:全是垃圾值
np.arrange(15) 生成0-15(前闭后开)的数组
数组 = 数组1.astype(np.float64) # 可以转换数组类型
里面也可以填其他数组的类型:例如...(数组2.dtype)
数组的运算
任何运算都会运用到具体的元素,不同大小数组之间的运算叫做广播
不同数组之间的比较会生成布尔值数组
索引和切片
一维数组:array[索引]
二维数组:arr2d[行索引][列索引]
切片索引:array[ start : stop ] arr2d[ start:stop , start:stop ] #注意中间的逗号
注意:对切片的赋值也会扩散到整个选区
布尔型索引:假设布尔数组为bool_arr
利用布尔数组去获取其他数组array的内容 array[bool_arr]
赋值的话直接在后面写等于多少就行了
花式索引: array[[索引1,索引2,索引3...]]
arr2d[[索引1,索引2...],[索引1,索引2...]]
数组转置和轴对换:
转置:array.T 或者 np.transpose(array)
或者array.transpose() # 括号内可以写轴名..表示按照轴调换位置,默认行列转换
或者array.swapaxes(轴1,轴2) # 对指定的轴转换
2.通用函数:快速的元素级数组函数
平方根: np.sqrt(array)
指数: np.exp(array)
找两个数组的最大值: np.maximum(array1,array2)
modf可以返回数组的小数和整数部分:
decimal_part,integer_part= np.modf(array)
3.利用数组进行数据处理
1.书上有个np.meshgrid的例子,没太懂
2.将条件逻辑表述为数组运算
numpy.where函数是三元表达式x if condition else y的矢量化版本
使用办法:result = np.where(cond, xarr, yarr) cond是布尔数组
意思:如果cond是True,输出xarr,否则输出yarr
xarr和yarr不一定是数组,可以是标量值
例子:np.where(array>0,array,-2) 把array大于0的保持不变,小于0的替换成-2
3.数学和统计方法 (用到了轴)
array.mean() 相当于 np.mean(array)
array.sum()
上面两个函数可以接受一个axis选项参数
arr.consum() 累加函数 也可以限制axis=1....
用于布尔型数组的方法
sum常用来计算bool型数组的True的计数
any测试是否存在一个或多个True,all则是测试是否都是True
对于非布尔型数组,所有非0元素都会被当做True
排序
array.sort( ) 可以设置axis= 或省略axis=
唯一化以及其他的集合逻辑
np.unique(array) 找出数组中的唯一值病返回已排序的结果
相当于sorted(set(names))
np.in1d(arrat,[数组]) 测试一个数组中的值在另外一个数组中的成员资格,返回布尔数组
用于数组的文件输入输出
np.save('文件名(不用包含尾缀)',array) 如果没有尾缀,则会自动加上扩展名.npy
np.load('文件名')
np.savez('文件名',a=array1,b=array2)
读取时,arr = np.load('文件名')
print(arr['b']) array2
线性代数
点乘 x.dot(y) 相当于np.dot(x,y)
伪随机数生成
numpy.random模块