本文共 4679 字,大约阅读时间需要 15 分钟。
Numpy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!
Numpy简单创建数组
import numpy as np# 创建简单的列表a = [1,2,3,4]# 将列表转换为数组b = np.array(a)if __name__ == '__main__': print(b)
输出结果:
Numpy查看数组属性
import numpy as np# 创建简单的列表a = [1,2,3,4]# 将列表转换为数组b = np.array(a)#数组元素的个数print(b.size)#数组形状print(b.shape)#数组维度print(b.ndim)#数组的元素类型print(b.dtype)
输出结果:
快速创建N维数组的api函数
import numpy as np# 快速创建N维数组的api函数array_one = np.ones([10, 10])if __name__ == '__main__': print(array_one)
输出结果:
创建10行10列的数值为浮点0的矩阵:
import numpy as np# 创建10行10列的数值为浮点0的矩阵array_zero = np.zeros([10, 10])if __name__ == '__main__': print(array_zero)
输出结果:
创建指定形状
import numpy as np# Numpy创建随机数组np.random# 均匀分布#创建指定形状(示例为10行10列)的数组(范围在0至1之间)print(np.random.rand(10, 10))
输出结果:
创建指定范围内的一个数
import numpy as np# Numpy创建随机数组np.random# 均匀分布# 创建指定范围内的一个数print(np.random.uniform(0, 100))
输出结果:
创建指定范围内的一个整数
import numpy as np# Numpy创建随机数组np.random# 均匀分布# 创建指定范围内的一个整数print(np.random.randint(0, 100))
输出结果:
给定均值/标准差/维度的正态分布
import numpy as np# Numpy创建随机数组np.random# 正态分布# 给定均值/标准差/维度的正态分布print(np.random.normal(1.75, 0.1, (2, 3)))
输出结果:
数组的索引,切片
import numpy as np# Numpy创建随机数组np.random# 正态分布# 数组的索引, 切片# 正态生成4行5列的二维数组arr = np.random.normal(1.75,0.1,(4,5))print(arr)# 截取第1至2行的第2至3列(从第0行算起)after_arr = arr[1:3,2:4]print(after_arr)
输出结果:
改变数组形状
import numpy as np# 改变数组形状(要求前后元素个数匹配)print("reshape函数的使用!")one_20 = np.ones([20])print("-->1行20列<--")print(one_20)one_4_5 = one_20.reshape([4,5])print("-->4行5列<--")print(one_4_5)
输出结果:
Numpy计算
条件判断:import numpy as np# Numpy计算# 条件判断stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])print(stus_score > 80)
输出结果:
三目运算:
import numpy as np# Numpy计算# 三目运算stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])# 如果数值小于80,替换为0,如果大于80,替换为90print(np.where(stus_score<80,0,90))
输出结果:
求最大值
import numpy as np# Numpy计算# 统计运算 —— 求最大值stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])# 指定轴最大值amax(参数1: 数组; 参数2: axis=0/1; 0表示列1表示行)print("每一列的最大值为:")result = np.amax(stus_score, axis=0)print(result)print("每一行的最大值为:")result = np.amax(stus_score, axis=1)print(result)
输出结果:
求最小值:
import numpy as np# Numpy计算# 统计运算 —— 求最小值stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])# 指定轴最小值amin(参数1: 数组; 参数2: axis=0/1; 0表示列1表示行)print("每一列的最小值为:")result = np.amin(stus_score, axis=0)print(result)print("每一行的最小值为:")result = np.amin(stus_score, axis=1)print(result)
输出结果:
指定轴平均值mean
import numpy as np# Numpy计算# 统计运算 —— 求平均值stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])# 指定轴平均值mean(参数1: 数组; 参数2: axis=0/1; 0表示列1表示行)print("每一列的平均值为:")result = np.mean(stus_score, axis=0)print(result)print("每一行的平均值为:")result = np.mean(stus_score, axis=1)print(result)
输出结果:
方差std
import numpy as np# Numpy计算# 统计运算 —— 求方差stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])# 指定方差std(参数1: 数组; 参数2: axis=0/1; 0表示列1表示行)print("每一列的方差为:")result = np.std(stus_score, axis=0)print(result)print("每一行的方差为:")result = np.std(stus_score, axis=1)print(result)
输出结果:
数组与数的运算
import numpy as np# Numpy计算# 统计运算 —— 数组与数的运算(加法)stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])print("加分前:")print(stus_score)# 为所有平时成绩都加5分stus_score[:,0] = stus_score[:,0]+5print("加分后:")print(stus_score)
输出结果:
import numpy as np# Numpy计算# 统计运算 —— 数组与数的运算(乘法)stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])print("减半前:")print(stus_score)# 为所有平时成绩都加5分stus_score[:,0] = stus_score[:,0]*0.5print("减半后:")print(stus_score)
输出结果:
数组间运算:
import numpy as np# Numpy计算# 统计运算 —— 数组间运算a = np.array([1,2,3,4])b = np.array([10,20,30,40])c = a + bd = a - be = a * bf = a / bprint("a+b为",c)print("a-b为",d)print("a*b为",e)print("a/b为",f)
输出结果:
矩阵运算np.dot()
计算规则
(M行, N列) * (N行, Z列) = (M行, Z列)import numpy as np# Numpy计算# 矩阵运算:总成绩# 计算规则# (M行, N列) * (N行, Z列) = (M行, Z列)stus_score = np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])# 平时成绩占40% 期末成绩占60%,计算结果q = np.array([[0.4],[0.6]])result = np.dot(stus_score,q)print("最终结果为:")print(result)
输出结果:
矩阵拼接
矩阵垂直拼接import numpy as np# Numpy计算# 矩阵拼接# 矩阵垂直拼接print("v1为:")v1 = [[0,1,2,3,4,5],[6,7,8,9,10,11]]print(v1)print("v2为:")v2 = [[12,13,14,15,16,17],[18,19,20,21,22,23]]print(v2)#垂直拼接result = np.vstack((v1,v2))print("v1和v2垂直拼接的结果为")print(result)
输出结果:
矩阵水平拼接
import numpy as np# Numpy计算# 矩阵拼接# 矩阵水平拼接print("v1为:")v1 = [[0,1,2,3,4,5],[6,7,8,9,10,11]]print(v1)print("v2为:")v2 = [[12,13,14,15,16,17],[18,19,20,21,22,23]]print(v2)#垂直拼接result = np.hstack((v1,v2))print("v1和v2水平拼接的结果为")print(result)
输出结果:
Numpy读取数据np.genfromtxtimport numpy as np# Numpy读取数据np.genfromtxt# genfromtxt 设置csv文件读取路径,设置分隔符result = np.genfromtxt("./students_score.csv",delimiter=",")print(result)
输出结果:
转载地址:http://wayki.baihongyu.com/