运用简单的代码介绍二者的一些简单的功能
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.image import imread
#Numpy数组(np.array)可以生成N维数组,即可以生成任意维数的数组。数学上一般将一维数组称为向量,二维数组称为矩阵
#此外还可以将一般化之后的向量或者矩阵统称为张量。
def createNumpy():
"""
生成numpy数组
:return:
"""
x = np.array([1.0,2.0,3.0])
print(x)
print(type(x))
def createNumpyAddAnddecay():
"""
numpy的算数运算
:return:
"""
x = np.array([1.0,2.0,3.0])
y = np.array([2.0,4.0,6.0])
#需要注意的是当x和y的元素个数相同时,才可以对各个元素进行算术运算,如果元素个数不相同,程序就会报错。
print(x+y)
print(x-y)
print(x*y)
print(x/y)
#numpy不仅可以进行element-wise(对应元素)运算,还可以和单一数值组合起来进行运算。
# 即numpy各个元素和标量之间进行运算,这个功能被称为广播
print(x/2.0)
def createNumpyNdices():
"""
生成多维数组
:return:
"""
A = np.array([[1,2],[3,4]])
print(A)
#通过shape来展示出矩阵A的形状,假如学习过TensorFolw,会感觉很熟悉.(2,2)表示生成一个2*2的矩阵。
print(A.shape)
#同样通过dtype来查看矩阵元素的数据类型
print(A.dtype)
#多维矩阵的算术运算
B = np.array([[3,0],[0,6]])
#对应相加
print(A+B)
#对应相乘,切记在这里不是两个矩阵整体相乘,而是对应元素相乘。即A11*B11.
print(A*B)
#矩阵进行广播
print(A*10)
def createBroadcast():
"""
形状不同的数组之间能进行运算吗?我们在前面提到如果元素个数不相同那么就会报错。
但是对于一维的数组来讲可以扩展至任意的大小进行计算。
一个2*2矩阵和10相乘那么这个标量10就会被扩展成2*2的形状。这个功能称为广播
因为NumPy有广播的功能,因此不同形状的数组之间也可以顺利的进行运算。
:return:
"""
A = np.array([[1,2],[3,4]])
B = np.array([10,20])
print(A*B)
def createVisttElement():
"""
元素的索引从0开始,对各个元素的访问可按如下方式进行
:return:
"""
X = np.array([[51,55],[14,19],[0,4]])
print(X)
#第0行
print(X[0])
#第0行第0个元素
print(X[0][0])
#使用for循环语句访问各个元素,每一行输出对应的一行。
for row in X:
print(row)
#NumPy还可以使用数组访问各个元素
X = X.flatten()#将X转换为一维数组
print(X)
#获取索引为0,2,4的元素
print(X[np.array([0,2,4])])
#使用条件输出
print(X[X>15])
def matplotlibFirst():
"""
简单画图
:return:
"""
#生成数据
x = np.arange(0,6,0.1)#以0.1为步长生成0到6的数据
y = np.sin(x)
#绘制图形,应用NumPy的sin函数np.sin(),将x,y的数据传给plt.plot,然后绘制图形。
#最后通过ply.show进行显示
plt.plot(x,y)
plt.show()
def matplotlibSinAndCos():
"""
在sin的基础上添加cos,并且增加标签
:return:
"""
#准备数据
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")#用虚线绘制cos
plt.xlabel("x")#x轴标签
plt.ylabel("y")#y轴标签
plt.title('sin&cos')#标题
plt.legend()
plt.show()
def matplotilibImgShow():
"""
读取图片
:return:
"""
img = imread('lena.png')
plt.imshow(img)
plt.show()
def main():
matplotilibImgShow()
if __name__ == "__main__":
main()