1.如何创建一个numpy.array?
# 创建 np.array(3, dtype=int) # 创建一个数组 np.arange(10, 2, -2) # 按序创建一个数组 np.full(shape=(3, 5), fill_value=666) # 创建一个3行5列,元素为666的矩阵 np.empty(3, dtype=int) # 创建一个伪随机数组,实际是空 np.ones(3, dtype=int) # 创建一个全是1的数组 np.zeros(3, dtype=int) # 创建一个全是0的数组 np.eye(3, 5, dtype=int) # 创建一个i=j全为1的 np.diag([3, 4, 5], 1) # 从下标为1处开始 np.vander([1, 2, 3], 4) # 生成每一列都是输入一维数组或列表或元组的递减幂, x其中最高多项式阶数为n-1 np.concatenate((a, b), axis=0) # 将两个数组拼接 np.linspace(a, b, 3) # 线性分割 在[a, b]中等长截取n个点,包括a和b np.logspace(2, 3, 3) # 以10为底,划分 10的平方~10的立方,平均划分 np.random.randint(a, b) # [a, b)间的整数 np.random.randint(a, b, size=10) # 从[a, b)中有放回的选取10个整数 np.random.random((a, b)) # 创建a行b列的矩阵,元素随机 np.random.seed(66) # 随机种子:使随机产生的数固定 np.indices((3, 4)) # 生成两个规定行列相同的数组,分别按行和列从0开始 np.fromstring(d, dtype=np.int8) # 将字符串以ASCII码形式输出2.numpy.array的属性
# 形状 a.shape # 形状 a.ndim # 维度 a.size # 元素个数 np.reshape(-1, 2) # 重塑 -1表示根据列数自动判断行数 np.hsplit(a, 2) # 按列分割 np.vsplit(a, (3, 4)) # 按行分割 np.hstack(a, b) # 按行堆叠 np.vstack(a, b) # 按列堆叠 np.block([a, b]) # 堆叠 np.flip(a, axis=0) # 反转3.矩阵运算
np.linalg.inv(a) # 求矩阵的逆 np.linalg.pinv(a) # 求矩阵的伪逆 当矩阵不可逆时,可用此方法 a.T # 转置 np.transpose(a, (1, 2, 0)) # 转置,对于三维,默认是第一三个维度交换。 # 可通过设置改变,此出就是将一二三维分别放到三一二维 a.sum(axis=1) # 求和,可设置轴 a.min(axis=0) # 求最小 a.prod(axis=0) # 求乘积 a.mean() # 平均值 a.var() # 方差 a.std() # 标准差 np.around(a) # 四舍五入 np.ceil(a) # 向上取整 np.floor(a) # 向下取整 np.dot(a, b) # 表示矩阵的乘法 np.abs() # 绝对值 np.sin() cos() tan() # 三角函数 np.exp() np.log() # 以e为底的指数,对数 np.log2() np.log10() # 以2为底,以10为底的对数 np.power(a, 2) # 求a矩阵中每个元素的平方,不影响原矩阵4.arg运算
np.argmin(x) # argmin() argmax() 最小(大)值的索引 np.sort(a, axis=0) # 0是列 1是行 np.argsort(x) # 排序后每个数在原数组中的索引 np.partition(x, 0) # 小于0的排在0前面,大于0的排在0后面 np.argpartition(x, 0) # 排序后每个数在原数组中的索引5.切片
a[-2:] # 从倒数第二个到末尾 a[(a > 2) & (a < 11)] # 筛选大于2且小于11的元素 np.nonzero(a > 5) # 查询范围内的元素,并把x,y轴分别用元组表示 np.unique(a, return_index=True, return_count=True) # 查询数组中不同元素中第一个出现的