目录

  • 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中矩阵转换

  • 形状改变:reshapeA.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.TA.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()

pytorch删除矩阵的某一行 python矩阵删除一行_机器学习

  • 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()

pytorch删除矩阵的某一行 python矩阵删除一行_机器学习_02

  • 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()

pytorch删除矩阵的某一行 python矩阵删除一行_numpy_03

  • 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()

pytorch删除矩阵的某一行 python矩阵删除一行_python_04