应用Matplotlib绘制图标分析
# 1.创建一维数组
# 导入包
import numpy as np#两种方式创建一维数组
vector = np.array([1,2,3]) #把数列转换成 nampy格式的数组
print(vector)print(type([1, 2, 3]), type(vector))
vector = np.arange(15) #使用numpy.arange()方法创建给定区间,固定步长的数组或矩阵
print(vector)"""range([start, ]stop [,step])"""
# 2.创建多为数组
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)
# 创建指定维度且元素全部为1的数组
one_matrix = np.ones([2,3]) #创建2*3的全1数组
print("全1数组:\n",one_matrix)
# 创建指定维度且元素全为0的数组
zero_matrix = np.zeros([2,3]) #创建2*3的全0数组
print('全0数组\n',zero_matrix)
# 创建指定维度且元素全为随机数的数组
rand_matrix = np.empty([2,3]) #创建2*3的全随机数组
print('全随机数组:\n', rand_matrix) #此处生成的值不一定是0,因为刚好分配给当前函数生成值的内存上刚好是0
#此处生成的值不一定是0,因为刚好分配给当前函数生成值的内存上刚好是0
# 3.操作数组元素
a = np.ones([2,3])
print(a)
a[1,1] = 100 #将数组a的[1,1]的值修改为100
print(a)a[0,2] = -10
print(a)
a = np.ones([2,3])
# ndim: 统计数组维数,即维度的数量
print('维度', a.ndim)
# shape:统计数组维度值,即数组行和列
print('形状',a.shape)
# size:统计数组元素的综述
print('元素个数',a.size)
# dtype:数组元素类型
print('元素类型',a.dtype)
# itemsize:数组中每个元素的字节大小
print('每个元素的字节大小',a.itemsize)
# 1.数组的算数运算
# 数组加、减、乘、除
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])print("a+b", a+b);
print("a-b", a-b);
print("a*b", a*b);
print("a/b", a/b);
import time
num_count = 10000
a = [i for i in range(num_count)]
b = [i for i in range(num_count)]list_res = []t1 = time.time()
for i in range(num_count):list_res.append(a[i] + b[i])
t2 = time.time()
list_cost = t2-t1
# print(list_res)np_a, np_b = np.array(a), np.array(b)
t3 = time.time()
np_res = np_a + np_b
t4 = time.time()
np_cost = t4-t3print('列表迭代计算耗时 = %.8f' % list_cost) #把变量填到%.8f这个地方,保留8位小数
print('numpy计算耗时 = %.8f' % np_cost)print(np.array_equal(np_res,np.array(list_res)),f"{np_cost/list_cost: .8f}")
# print(np_res)
# 结果发现 用np做计算的耗时比直接用列表计算的耗时 减少一半,因其强大的性能,所以常被用来做数学运算
结果发现 用np做计算的耗时比直接用列表计算的耗时 减少一半,因其强大的性能,所以常被用来做数学运算
# 2.数组实现矩阵运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])print("a*b=",a*b)
#numpy.dot(矩阵乘)有2种写法:①x.dot(y)②np.dot(x,y)
print("Matrix1:",a.dot(b))
print("Matrix2:",np.dot(a,b))
#3.数组与标量算术运算
a = np.array([1,2,3])
print("a+2=",a+2)
print("a-2=",a-2)
print("a*2=",a*2)
print("a/2=",a/2)
#4.一维数组的min,maX,Sum运算
a = np.array([1,2,3])
print("min of array:",a.min())
print("max of array:",a.max())
print("sum of array:",a.sum())#一维数组的exp,sgrt,square运算
print("exp of array:",np.exp(a))
print("sqrt of array:",np.sqrt(a))
print("square of array:",np.square(a))e = 2.71828183
e ** 2
#5.多维数组的min,max,sum运算
a = np.array([[1,2,3],[4,5,6]])
print("min of array:",a.min())
#ax15=0,表示沿着纵轴进行计算
print("min of array:",a.min(axis=0))
#axi5=1,表示沿着纵轴进行计算
#【数组1,数组2]
#数组1=[1,2,3]
#数组2=[4,5,6]
print("min of array:",a.min(axis=1))
print("max of array:",a.max())
print("max of array:",a.max(axis=0))
print("max of array:",a.max(axis=1))
print("sum of array:",a.sum())
print("sum of array:",a.sum(axis=0))
print("sum of array:",a.sum(axis=1))```
#6.随机数组生成
np.random.seed(42)
print(np.random.rand(2,3)) # 均匀随机分布,[0,1]
print(np.random.randn(2,3)) # 正态分布
print(np.random.randint(1,10))# [start, end]
print(np.random.binomial(6,1))# 二项分布
print(np.random.beta(2,3)) # beta分布
print(np.random.normal(2,3)) #高斯正态分布
#7.一维数组索引、切片、送代
a=np.arange(10)
print(a)#打印整个数组
print(a[:5])#打印数组前5个元素
for i in a: print(a[i])
#8.多维数组索引、切片、迭代
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
#打印整个数组
print(a[0:2,1:3])#打印数组不同维度指定元素
# a[0:2,] = [[1,2,3],[4,5,6]]
# a[0:2, 1:3] = [[2,3],[5,6]]
for i in a:print(i)
import numpy as np
import matplotlib.pyplot as plt
a=np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
plt.hist(a,bins=[0,20,40,60,80,100])np.sort(a)
import numpy as np
import matplotlib.pyplot as plt
a=np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
hist,bins=np.histogram(a,bins=[0,10,20,30,40,50,60,70,80,90,100])
print(hist)
print(bins)
x = [(bins[i]+bins[i+1])/2 for i in range(len(bins)-1)]#每个柱子的中心坐标
print("x:",x)
y = hist #每个柱子的高度
plt.bar(x,y,width=bins[1]-bins[0])#width表示每个柱子的宽度
plt.show()