以前学的全忘了,现在算是才开始学,有错误,恳请指正。
目录
1.4 Python脚本文件
1.4.1保存为文件
1.4.2 类
1.5 Numpy
1.5.1 导入Numpy
1.5.2 生成Numpy数组
1.5.3 Numpy的算术运算
1.5.4 Numpy的N维数组
1.5.5 广播
1.5.6 访问元素
1.6 Matplotlib
1.6.1 绘制简单的图形
1.6.2 pyplot的功能
1.6.3 显示图像
在家就是不太适合学习(至少我是),今天回学校了,继续开始下面的学习:
1.4 Python脚本文件
1.4.1保存为文件
为了可以在以后使用我们写的一串python代码,我们就可以将其保存为文件,也就是我们常说的.py文件,例如:
如果想在终端执行这个文件代码,那么就需要使用cd命令进入到该文件的保存位置,然后使用python 文件名就可以执行,比如说执行上面的这个代码(代码需要输入,我忘了输入,所以报错了):
但是在打开终端的时候,默认是在C盘下,如果你的代码在其他盘,那么就需要先转到该盘,然后再执行,就比如说我的在D盘下,所以就先转到D盘,再使用cd进入相应文件夹,去执行相应文件。
运行结果如下:
1.4.2 类
python中自有的类比如:int,float。但是,有时候我们需要自定义类,比如:人,那么人这个类就有自己的属性(比如姓名),也有自己的方法(比如人唱歌),感觉这里和Java中的一样。但是对于他的构造函数,有一定的差别。
python中定义类是使用class 类名:来定义,然后下面写函数,首先就是构造函数,然后就是类的其他方法。
例如:
但是我有一下疑问:
1、定义类的时候必须写构造函数嘛?
2、为什么要有实例变量self.name
解答(来自ai):
-
定义类时不需要必须写构造函数,但显式定义
__init__
方法可以让对象初始化更加方便和清晰。 -
**实例变量
self.name
**是必要的,因为它允许每个对象独立存储数据,而self
是访问当前对象属性和方法的关键。
如果将上述的代码修改为没有显形的构造函数,那么修改的结果如下:
此时需要手动为对象添加属性。
1.5 Numpy
numpy函数用于数组、矩阵等的数值计算。
1.5.1 导入Numpy
python中函数的导入使用的函数引用是使用import。
import numpy as np
意思就是导入numpy函数,然后将此函数命名为np。即以后在使用numpy函数的时候可以直接用你np来代替(下面使用的时候,就直接按照这个来代替了)。
1.5.2 生成Numpy数组
使用的语法是np.array()。
一维数组,就是一个中括号。例如:
x = np.array([1,2,3])
二维数组就是两个中括号,例如:
x = np.array([[1,2,3],[2,3,4]])
多维数组道理一样,一直往下写就可以了。
如果想要知道x的类型,使用的还是type()函数。
例如:
1.5.3 Numpy的算术运算
算术运算常见的也就是加减乘除,如果说两个运算的数值,维数相同,那么直接一对一那样运算即可。例如:
从上述例子可以看出,相同维度,只是相同位置进行运算即可。
1.5.4 Numpy的N维数组
可以从上面的例子看出N维数组的样子,二维数组又可以看作是一个矩阵,对于矩阵的运算,我们在前面例子已经看到了,对于相同维数的运算,就是直接对应元素计算即可。
若想要知道N维数组的形状,那么可以用shape(这里shape后面是没有括号的,要注意),例如:
若想知道里面元素的类型,可以使用dtype(后面依旧没有()) ,例如:
1.5.5 广播
Numpy不仅可以进行对应元素的运算,还可以和标量进行运算,在运算的过程中,就需要提到广播了。
我理解的就是,根据所给的数组,将现有的标量进行一个扩写。
例如:现在有数组c,有标量q=2。
若想进行c和q的运算,那么就需要将q扩展成一个与c维度相同的数据进行运算。
得到的结果就是每个元素都乘以标量2。
1.5.6 访问元素
这里访问元素可以直接按照访问数学中的矩阵里面的元素那样,下标从0开始。比如常见的二维数组,若是只指定了一个下标,那么就输出这一行(或列)若是指定了两个下标,那么就直接输出某个元素。
例如:
如果想要遍历整个数组,可以使用for,例如:
2维以及以上的数组,可以进行展平操作,即降成一维,使用函数flatten()。
例如:
然后就可以单纯的对里面的元素进行分析。如果使用比较算数符,比如:>,那么输出的结果就是布尔型,例如:
1.6 Matplotlib
Matplotlib常用于绘制图形,实现数据的可视化。
1.6.1 绘制简单的图形
绘制图形的时候,使用的是matplotlib的pyplot模块。
例如:绘制sin函数
#首先导入所需模块,需要的是处理数据的和绘制图形的
import numpy as np
import matplotlib.pyplot as plt
#设置数据(生成数据)
x = np.arange(0,6,0.1)
y = np.sin(x)
#绘制图形
plt.plot(x,y)
plt.show()
绘制结果:
1.6.2 pyplot的功能
pyplot不仅可以绘制图形,还可以对图形进行添加标签、标题等。
例如:绘制sin&cos函数图形,并添加主题和标签。
#导入模块
import numpy as np
import matplotlib.pyplot as plt
#生成数据
x = np.arange(0,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
#添加标签,主题等
plt.plot(x,y1,label="sin")
plt.plot(x,y2,linestyle="--",label="cos") #使用linestyle定义绘制曲线的款式
plt.xlabel("x")
plt.ylabel("y")
plt.title("sin&cos")
plt.legend()
plt.show()
绘制结果:
1.6.3 显示图像
前面提到的plt.show()是用来显示绘制的图形,这里的是显示图像,也就是对现有的某种图片进行显示。
使用的imshow()方法。图像的读入使用的是matplotlib.image的imread()方法。
注意:这里我在没写代码之前以为使用了imshow()方法就不需要show来显示的,但是事实并不是这样。
-
plt.imshow()
:用于将图像数据加载到当前图形中,但不会显示图形窗口。 -
plt.show()
:用于显示图形窗口,是将图形渲染到屏幕上的关键步骤。
例如:随机读一个棉花的RGB图:
#导入所需模块和函数
import matplotlib.pyplot as plt
from matplotlib.image import imread
#读入图像
imag = imread("D:/5.23/zc-x7/zc-x7-20.tif")
plt.imshow(imag)
plt.show()
显示结果:
除了上面注意点,还有一个要注意的就是,自己复制的路径很可能是反斜杠(\,用来转义的),但是这里的路径是需要斜杠(/)的。
ok,第一章python基础就先这样了,后面遇到什么不会的,就再学吧,明天开始学习下一章,感知机。