用户自己定义类,将会创建新的数据类型,同时可以定义相关类的函数和属性。
class 类名:
def __int__(self,参数,...): # 构造函数
...
def 方法名1(self, 参数, …): # 方法1
...
def 方法名2(self, 参数, …): # 方法2
...
其中,__int__就是构造函数,可以在生成类的实例时进行数据的初始化。
class Man:
def __init__(self, name):
self.name = name
print("Initialized!")
def hello(self):
print("Hello " + self.name + "!")
def goodbye(self):
print("Good-bye " + self.name + "!")
m = Man("David")
m.hello()
m.goodbye()
理解:
通过构造函数创建一个实例对象m,向其中传入参数name,然后将该参数转化为实例的变量(self.name=name实际上类似于在Java中学习的this.name=name,这个带有“身份”的变量就是可以在各个“成员方法”间进行拿来进行应用的变量)
与平时的方法一样:
import numpy as np
以后就可以直接用np代表numpy来实现相关库的方法调用啦,注意如果没有写as np 是不可以写成后面的一系列形式的。
np.array()
生成的类型为:numpy.ndarray
>>> x = np.array([1.0, 2.0, 3.0])
>>> print(x)
[ 1. 2. 3.]
>>> type(x)
<class 'numpy.ndarray'>
>>> x = np.array([1.0, 2.0, 3.0])
>>> y = np.array([2.0, 4.0, 6.0])
>>> x + y # 对应元素的加法
array([ 3., 6., 9.])
>>> x - y
array([ -1., -2., -3.])
>>> x * y # element-wise product
array([ 2., 8., 18.])
>>> x / y
array([ 0.5, 0.5, 0.5])
解释:实际上就类似于对于矩阵点对点的运算,并且要注意是相同“维度”的
[ ]表示一个维度的数组,如上述例题,如果中间用 , 隔开则可以创造多维数组,基本上将二维数组称为“矩阵”,将三维数组及三维以上的数组称为“张量”或“多维数组”。举例如下:
>>> A = np.array([[1, 2], [3, 4]])
>>> print(A)
[[1 2]
[3 4]]
>>> A.shape # A的形状的查看方式
(2, 2)
>>> A.dtype # 矩阵元素的数据类型的查看方式
dtype('int64')
>>> A * 10
array([[ 10, 20],
[ 30, 40]])
>>> A = np.array([[1, 2], [3, 4]])
>>> B = np.array([10, 20])
>>> A * B
array([[ 10, 40],
[ 30, 80]])
数组名[行][列]
但要注意这期间是从0开始进行索引的
也可以进行某数组的遍历(结果就是返回各个数组的具体情况)
>>> for row in X:
... print(row)
...
[51 55]
[14 19]
[0 4]
>>> X = X.flatten() # 将X转换为一维数组
>>> print(X)
[51 55 14 19 0 4]
>>> X[np.array([0, 2, 4])] # 获取索引为0、2、4的元素
array([51, 14, 0])
>>> X > 15
array([ True, True, False, True, False, False], dtype=bool)
>>> X[X>15] # 选出True类型的数组所对应元素,[数组]中的功能和我们上一个获取索引的例子是相似的
array([51, 55, 19])
使用Matplotlib可以轻松地绘制图形和实现数据的可视化,这个与深度学习十分相关。这个包需要自己进行导入!
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据(不包含6!!!实际范围为[0,5.9])
y = np.sin(x) # 调用Numpy中的sin函数
# 绘制图形
plt.plot(x, y)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制图形
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle = "--", label="cos") # 用虚线绘制
plt.xlabel("x") # x轴标签
plt.ylabel("y") # y轴标签
plt.title('sin & cos') # 标题
plt.legend() # 带图注
plt.show()
可以看到与MATLAB中的函数语法有多么相似呀,就不过多介绍了
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('lena.png') # 读入图像(设定合适的路径!)
plt.imshow(img)
plt.show()
注意:要把图片放在同一路径下!