- 快速;
- 方便;
- 科学计算的基础库;
一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用在大型、多维数组上执行数值运算。
使用 数组- 创建数组:
import numpy as np a_1 = np.array([1, 2, 3, 4, 5]) a_2 = np.array(range(1, 6)) a_3 = np.arange(1, 6)
- 以上三个数组的内容相同;
- arange()与range()区别:
- arange([start, ]stop[, step][, dtype=None])
- dtype是指数组中存放的数据的类型。会在Python基础类型后加一个显示位数的数字,比如int64(表示有符号和无符号位的64位(8字节)整型数据);
- 默认根据电脑位数存储;
- 传入参数可更改数据类型(比如np.int8);
- 使用astype()方法可通过传参改变数组类型,会形成新数组,不影响原数组数据;
- arange([start, ]stop[, step][, dtype=None])
np.random.random()
- 生成0~1的随机小数;
np.round(array, n)
- 对传入的数列进行取N位小数操作;
- 数组的形状:
- 查看形状:
- array.shape()
- 重塑形状:
- array.reshape(x,y,z[,…])
- n个参数则产生n维数组;
- 举例:
array_1 = np.arange(24) array_2 = array_1.reshape(2, 3, 4)
输出结果为:[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]
- 注意:数组元素数目必须与参数乘积相等,否则报错;
- array.flatten()
- 将数组展开成一维数组;
- array.reshape(x,y,z[,…])
- 查看形状:
- 数组的计算:
- 数组与数字做运算:
- 对数组进行加减乘除相当于对数组的每个数字进行相应计算;
- 注意:在numpy中对0做除法,0/0 = nan;n/0 = inf;
- 数组与数组同形时做运算,对应位置做运算;
- 数组与数组列数相同时,每行做一次运算;
- 数组与数组行数相同时,每列做一次运算;
- 注意:如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或者其中一方的长度为一,则默认他们是广播兼容的。广播会在缺失或(和)长度为一的维度上进行;
- 数组与数字做运算:
- 转置:
- s.tranpose();
- s.T;
- s.swapaxes(0, 1):交换0轴和1轴;
- 切片操作:
- 取行:
- s[n];取第n行
- s[n:];从第n行开始取;
- s[[2, 8, 10]]:取不连续多行;
- 取列:
- s[:,n]:取第n列;
- s[:, n:];从第n列开始取;
- s[:, [2, 8, 10]]:取不连续多列;
- 取点:
- s[2, 3]:取第三行第四列交点的值;
- 取多行多列:
- s[2:5, 1:4]:取第三到五行,二到三列的内容;
- 取多个不相邻的点:
- s[0, 1], [0, 1]:取第一行第一列的值,取第二行第二列的值;
- 取行:
- 对值的修改:
- s[s<10] = 3;将s中小于10的值修改为3;
- s[s<10];返回值为其中小于10的值的序列;
- np.where(s<10, 0, 0);将s中小于10的数字换为0,大于10的数字换为10;(三元运算符)
- 裁剪(clip);
- s.clip(10, 18):将s中小于10的值替换为10,大于有8的值替换为18,nan不改变;
**注意:**nan为浮点类型;
轴- 可以理解为方向,使用数字0~n表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2, 2)),只有0轴和1轴,对于三维数组(shape(2, 2, 3)),有0、1、2轴;
- 在引入轴的概念之后,可以指定计算方向;



