1. 数据类型
名称 | 描述 |
---|
bool_ | 布尔型数据类型(True 或者 False) |
int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
intp | 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 | 字节(-128 to 127) |
int16 | 整数(-32768 to 32767) |
int32 | 整数(-2147483648 to 2147483647) |
int64 | 整数(-9223372036854775808 to 9223372036854775807) |
uint8 | 无符号整数(0 to 255) |
uint16 | 无符号整数(0 to 65535) |
uint32 | 无符号整数(0 to 4294967295) |
uint64 | 无符号整数(0 to 18446744073709551615) |
float_ | float64 类型的简写 |
float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
float32 | 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
float64 | 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
complex_ | complex128 类型的简写,即 128 位复数 |
complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分) |
complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分) |
名称 | 描述 |
---|
object | python对象类型 |
string_ | 固定长度的字符串类型 |
unicode_ | 固定长度的unicode类型 |
NaN | 缺失数据 |
2. 库
2.1 创建数组
函数/方法 | 描述 |
---|
np.array() | 创建 |
np.ones() | 创建全是1的数组 |
np.zeros() | 创建全是0的数组 |
np.full(size=,fill_value=n/str) | 创建全是某值的数组 |
np.arange(start = n0,stop = n1,step = n2) | 等差数组,根据步长分组 ,左闭右开 |
np.linspace(start = n0,stop = n1,num = n2) | 等差数组,根据元素数量分组(默认50个数) ,左右闭合 |
随机数组
函数/方法 | 描述 |
---|
np.random.random(n0,n1,size = [3,4]) | 随机数组(float,0~1之间) |
np.random.randint(n0,n1,size = [3,4]) | 随机数组(int) |
np.random.uniform(n0,n1,size) | 随机数组(float) |
np.random.choice(a,size) | 随机数(组),可重复取数,a为一个数时,从{0,a)取值;a是array时,从数组中随机取值 |
np.random.permutation(n) | 对0~n1整数随机重排 |
np.random.randn(n) | 正态分布,平均值=0,标准差=1 |
np.random.normal(loc=平均值,scale=标准差,size) | 规定平均值及标准差的正态分布 |
np.random.RandomState(随机种子) | 伪随机数生成器 |
np.random.seed(随机种子) | 伪随机数生成器 |
2.2 arr数据属性
| 函数 | 说明 |
---|
属性查看 | .ndim | 数组轴数 |
| .shape | 数组尺寸形状 |
| .size | 数组元素总数 |
| .dtype | 数组数据类型 |
| .itemsize | 各元素大小 |
| .base | 根数据 |
| .nbytes | 数组总字节大小,nbytes=size*itemsize |
索引(二维为例) | arr[0] | 返回第一维数组 |
| arr[0,0] 或 arr[0][0] | 返回第一维度内的第一个数(数据原类型) |
| arr([0],[0]) | 返回第一维度内的第一个数(array类型) |
| arr[[0,1]] | 花式索引,将数据复制到新数组中 |
形状操作 | arr.reshape() | 更改形状 |
| arr.reshape((-1,n)) | 数据会根据n自动计算出新的形状 |
| arr.T | 形状转置 |
| arr[:,newaxis] | 形状转置 |
| np.transpose(arr,axes = (1,0,2)) | 改变数组维度,如shape=(3,4,5),则变为shape=(5,4,3) |
排序函数 | arr.sort() | 排序并更改数组顺序 |
| np.sort(arr) | 排序输出但不改变数组顺序,axis可以更改轴 |
| arr.argsort() | 返回排序后的索引 |
| np.partition(arr,K,axis) | 将前K个值分隔放到最左边,其他值放右边 |
| np.argpartition(arr,K,axis) | 将索引值按np,partition规则分割 |
| arr[::-1] | 倒序 |
2.3 文件IO操作
| 函数 | 说明 |
---|
文件IO操作 | np.save(‘x_arr’,x) | 单个数组保存 |
| np.savez(‘arr.npz’,x_arr = x,y_arr =y) | 多条数组保存 |
| np.savez_compressed(‘arr.npz’,x_arr = x,y_arr =y) | 多条数组保存,并压缩文件大小 |
| np.load(‘arr.npz’)[x_arr] | 加载数组文件 |
| np.savetxt(’/arr.csv’,arr,fmt=’%d’ ,delimiter = ‘,’) | 输出为csv文件 |
| np.loadtxt(’/arr.csv’,delimiter = ‘,’,dtype = 32int) | 加载csv文件 |
2.4 数组操作
| 函数 | 说明 |
---|
数据类型转换 | np.asarray(arr,dtype=‘float16’) | 转换数据类型 |
| np.astype(dtype=np.float16) | 转换数据类型 |
去重 | arr.unique() | 去重 |
视图和深拷贝 | arr.view() | 用arr创建视图(浅拷贝) |
| arr.copy() | 用arr深拷贝一份 |
插入 | np.append(arr,values,axis) | 在数组末尾增加数据 |
| np.insert(arr, obj, values, axis) | 在数组特定位置(obj)插入数据 |
堆叠(串联) | np.concatenate([[arr1],[arr2]],axis = 1) | 1代表列 |
| np.hstack((arr1,arr2)) | |
堆叠(并联) | np.array([arr1,arr2]) | |
| np.concatenate([[arr1],[arr2]],axis = 0) | 0代表行 |
| np.vstack((arr1,arr2)) | |
拆分 | np.split(arr,indices_or_sections=2,axis=0) | 在第一维度平均分为两份 |
| np.split(arr,indices_or_sections=[2],axis=1) | 在第二维度以索引2为分界分开 |
| np.vsplit(arr,indices_or_sections=2) | 竖直方向平均分为两份 |
| np.hsplit(arr,indices_or_sections=[2]) | 垂直方向以索引2为分界分开 |
转化 | arr.tolist() | 数组转化为列表 |
| arr.tobytes() | 转化为字节 |
2.5 数组计算
- 基本计算:数组之间可以进行加减乘除等运算
- 逻辑运算:数组之间可进行比较(arr1 == arr2)运算,得到bool值的数组
- 与标量运算:数组与普通数组之间可进行加减乘除等运算
- *=、+=、-=操作:与数组和数字之间都可使用,会修改现有数组,⽽不是创建⼀个新数组
- 以上计算返回的都是np.array数组
| 函数 | 说明 |
---|
通用函数 | np.abs(arr) | 绝对值 |
| np.sqrt(arr) | 平方根 |
| np.square(arr) | 平方 |
| np.exp(arr) | 以自然常数e为底的指数函数 |
| np.log (arr) | 以幂(真数)为自变量,指数为因变量,底数为常量的函数 |
| np.sin、cos、tan(arr) | 三角函数 |
| np.sinh、cosh、tanh(arr) | 双曲三角函数 |
| np.maxinmum、minimum(arr) | 最大、最小值 |
| np.count_nonzero(条件) | 统计符合条件的返回True的记录个数 |
| np.all(arr) | 测试沿着提到的轴的所有数组元素的求值是否为True |
| np.any (arr) | 测试沿着提到的轴的任一数组元素的求值是否为True |
| np.inner (arr) | 返回一维数组的向量内积。对于更高的维度,它返回最后一个轴上的和的乘积 |
| np.clip(arr) | 截取一定范围内的数 |
| np.round(arr) | 四舍五入 |
| np.trace(arr) | 返回沿数组对角线的和 |
| np.ceil(arr) | 上取整 |
| np.floor (arr) | 下取整 |
where函数 | np.where(condition,arr_true,arr_false) | 条件函数 |
集合运算函数 | np.intersect1d(arr1,arr2) | 交集 |
| np.union1d(arr1,arr2) | 并集 |
| np.setdiff1d(arr1,arr2) | 差集 |
数学和统计函数 | 以下函数默认对整个数组计算,亦可以指定维度分别计算 | 如:arr. min(axis=0)表示每行的最小值 |
| min、max | 最大、最小值 |
| mean | 平均值 |
| median | 中位数 |
| sum | 计算总和 |
| std | 标准差 |
| var | 方差 |
| cumsum | 元素累加求和 |
| cumprod | 元素累积乘积 |
| argmin、argmax | 最小、最大值索引 |
| argwhere | 条件索引 |
| cov | 矩阵的协方差矩阵 |
| corrcoef | 矩阵相关系数 |
2.6 线性代数
| 函数 | 说明 |
---|
矩阵计算 | arr1.dot(arr2) | arr1行乘以arr2列 |
| np.dot(arr1,arr2) | arr1行乘以arr2列 |
导入 | from numpy.linalg import inv,det,eig,qr,svd | |
| int(arr) | 矩阵的逆 |
| det(arr) | ⾏列式 |
| eig(arr) | 特征值和特征向量 |
| qr(arr) | qr分解值 |
| svd(arr) | svd分解值 |
3. 常见问题
3.1 使用“and、or”还是“&、|”
and 和 or 判断整个对象是真或假,而 & 和 | 是指每个对象中的比特位
当你使用 and 或 or 时,就等于让 Python 将这个对象当作整个布尔实体
当你对整数使用 & 和 | 时,表达式操作的是元素的比特