目录
- python中的jupyter的基本操作
- numpy创建矩阵
- numpy中矩阵转换
- numpy中的最大值最小值平均值
- numpy中的数学运算
- numpy中元素获取
- 简单绘图
python中的jupyter的基本操作
esc //进行命令模式
按b //向下增加一行
按a //向上增加一行
连续按两次d //删除一行
//编辑模式
shift + enter //运行命令
//运行的变量是根据运行的顺序决定的
//想要隐藏输出结果,点击jupyter对应代码块左边栏即可
//shift + tab //可以查看函数介绍
按tab自动补全函数!!
numpy创建矩阵
- 使用numpy进行普通矩阵创建
import numpy as np
x = np.array([1,2,3]) //创建矩阵中每个元素的类型为int32
y = np.uint8([1,2,3]) //创建矩阵中每个元素的类型为uint8
x = np.float32(x) //此时将x中的元素类型转换为float32
#使用arange函数创建矩阵,到不了最后一位
z = np.arange(10) //生成([0,1,2,3,4,5,6,7,8,9]),默认从0开始,步长为1
z = np.array(2, 10 ,2) //生成([2,4,6,8]),从2开始,步长为2
#使用linespace函数创建矩阵,可以到最后一位
u = np.linespace(0, 10, 11) //将0到10分成11份,每份长度为1,生成([0,1,2,3,4,5,6,7,8,9,10])
np.pi = 3.14 //也就是pi
- 使用numpy进行特殊矩阵创建
np.zeros((2,4), dtype = np.int32) //创建全0矩阵
np.ones((2,4), dtype = np.float32) //创建全1矩阵
np.eye(3) //创建3x3的单位矩阵,默认为float64类型
- 使用np.random.randint()创建矩阵
np.random.randint(0, 10, 5, np.int32) //在[0,10)范围内随机生成1x5矩阵。其中,它的子元素类型为int32
np.random.randint(0, 10, (3,4), np.int32) //在[0,10)范围内随机生成3x4矩阵
numpy中矩阵转换
- 形状改变:reshape
A.reshape((1,9))
- 将原矩阵转换为1x9,但是并不改变本身矩阵,可以等于某个矩阵获得改变后的结果
a = np.zeros((3,4))
b = a.reshape(1,12)
print(a) //(3,4)
print(b) //(1,12)
A.reshape(-1, 9)
让电脑自动计算是 多少行9列
- 将矩阵展开为一维
A.flatten()
,A.ravel()
-
A.flatten()
生成的形式为(9,)
,而不是(1,9)
-
A.ravel()
效果一样
- 矩阵转置:
A.T
、A.transpose()
,均可实现矩阵转置 - 矩阵堆叠,可以多个矩阵进行堆叠
-
np.hstack(([], []))
矩阵的水平堆叠,要求行数相同 -
np.vstack(([], []))
矩阵的垂直堆叠,要求列数相同
numpy中的最大值最小值平均值
- 最大值、最小值平均值
A.max()
,A.min()
,A.mean()
- 整个矩阵进行处理
- 对某一行/列进行处理,三种运算均相同
-
A.max(axis=0)
计算每列的最大值 =np.max(A, axis=0)
-
A.max(axis=1)
计算每行的最大值
numpy中的数学运算
- 矩阵相加:
A+B
两个矩阵对应元素相加 - 四种基础运算均可直接写出,均是对应元素运算
- 当形状不相同时,先广播再乘,这时均是对应相乘
a = [[1,1,1],
[1,1,1],
[1,1,1]]
b = [1,2,3]
a * b = [[1,2,3],
[1,2,3],
[1,2,3]]
a @ b = [6,6,6] @代表两个矩阵数学相乘
a.dot(b) = [6,6,6] //也代表两个矩阵的数学相乘
np.pow(A, 2)
每个元素平方np.sqrt(A)
每个元素开平方np.log(A)
每个元素取对数,默认底数为2
numpy中元素获取
- 取第0行
A[0, :]
- 取第0列
A[:, 0]
- 取第2-最后行,第2-最后列
A[1:,1:]
b = [[1,2,3],
[1,2,3],
[1,2,3]]
b[1:, 1:] = [[2,3],
[2,3]]
简单绘图
plt.plot(x,y)
散点图
-
plt.plot(x,y,"*")
线段的样式调整为*号 -
plt.plot(x,y,"*",color='r')
将线段的颜色调整为红色,“*”
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(2, 20)
y = 2 * x + np.random.randint(5, 20, 18)
plt.plot(x,y)
plt.show()
-
plt.plot(x,y)
更高级的写法
x = np.linspace(0, 1, 100)
y1 = np.power(x, 0.5)
y2 = x
y3 = np.power(x, 1.5)
//将每条线上定义一个label
plt.plot(x, y1, label=0.5)
plt.plot(x, y2, label=1)
plt.plot(x, y3, label=1.5)
//显示每条线上的label,如果不添加,不显示label
plt.legend()
plt.xlabel("r") //x轴添加标签
plt.ylabel("s") //y轴添加标签
plt.grid() //显示网格
plt.xlim([0, 1]) //限定x轴的取值范围
plt.ylim([0, 1]) //限定y轴的取值范围
plt.show()
plt.hist
直方图
- 统计元素出现的个数
x = np.random.randint(0, 101, 1000)
plt.hist(x, rwidth=0.9) //将柱状图的柱子分开,只显示90%
plt.hist(x, rwidth=0.9, color='g') //将柱子的颜色变为绿色
plt.show()
- bins的参数设置
- 如果不设置,默认直方图中有10个柱子
- 如果bins为数字n,则代表设置直方图有n个柱子
- 如果bins为数组,则生成的柱状以前后两个元素的中间值为中心生成柱子,统计范围为数组的范围
- 如bins = (0.5,1.5,2.5),则生成的柱子以1和2为中心,统计范围是[0.5,2.5)
bins = np.arange(-0.5, 101, 1) //以整数0,1,2,3,..,100为中心生成柱子,统计范围为(-0.5, 100)
plt.plot(x, bins)
plt.show()