numpy使用
什么是numpy
对基础的数据结构(数组)提供操作的扩展库
- 对多维数组的扩展
- 功能丰富的ufunc
- 线性代数、傅立叶变换、随机数等功能
创建和初始化
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2,3],dtype=np.float)
c = np.array(['1',2,3.0])
c.astype(np.float) #进行类型转换
arr_linespace = np.linspace(0,2 * np.pi,50) #将0倒2pi的区间等分成50个间隔
arr_linespace
X = arr_linespace
Y = np.sin(X) #计算每一个间隔的sin值
import matplotlib.pyplot as plt
plt.plot(X,Y) #描点画图
np.eye(3) #单位矩阵
np.empty((3,3))
np.ones((3,3))
np.full((3,3),7)
数组的操作
数组的基本属性
- ndim 维度
- shape 形状
- size 长度
- dtype 类型
a1 = np.array([1,2,3])
a2 = np.array([[1,2,3],[4,5,6]])
a3 = np.array([[[1,2,3]]])
a3.ndim #维度,几个括号嵌套
a3.shape #形状
a1.size
a1.dtype #类型
data = np.array([[1],[2],[3],[4],[5],[6]])
data.reshape(-1,) #-1表示自动计算维度数量
切片和索引
一维切片
v_array1 = np.array([1,2,3,4,5,6,7,8])
v_array1[:3]
v_array1[3:]
v_array1[::2]
v_array1[::-1]
高维度切片
v_array3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[11,12,13]]])
v_array3.shape
v_array3[:,:,:]
v_array3[:,:,1:]
v_array3[:,1:,1:]
集合图片操作的练习
img = plt.imread("test.jpg")
img
img.shape
plt.imshow(img)
plt.imshow(img[600:950,1400:1750,:])
plt.imshow(img[:,::-1,:])
plt.imshow(img[::-1,:,:])
plt.imshow(img[:,:,::-1])
0.3 * r + 0.59 * g + 0.11 * b
coeff = np.array([0.3,0.59,0.11]) #灰度转换系数
img_gray = img.dot(coeff)
plt.imshow(img_gray)
img_gray
数学方面的应用
初等函数作图
x_power = np.linspace(-10,10,500)
y_power = x_power ** 2
plt.plot(x_power,y_power)
x_log = np.linspace(-10,10,500)
y_log = np.log10(x_log)
plt.plot(x_log,y_log)
zhangsan = np.array([ 0,3,4,0,0])
lisi = np.array([1,0,0,3,0])
cosa = zhangsan.dot(lisi) / (np.linalg.norm(zhangsan) * np.linalg.norm(lisi))
cosa
rad 弧度 deg角度
np.rad2deg(np.arccos(cosa))
线性代数
鸡兔同笼问题
一个笼子有鸡,兔若干,已知有35个头,94个脚,请问有多少只鸡,多少只兔?
A_rabb = np.array([[1,1],[2,4]])
b = np.array([35,94])
np.linalg.inv(A_rabb).dot(b)
np.linalg.solve(A_rabb,b)
a_matrix = np.matrix([[1,1],[2,4]])
a_matrix
a_matrix.T #矩阵的转置,行变列,列变行
a_matrix ** -1 #矩阵的逆(倒数)
a_matrix.I #矩阵逆的另一种表示
a_matrix.I * np.matrix([35,94]).T #矩阵相乘,严格区分行矢量和列矢量
矩阵A * B可相乘的条件,A的列必须等于B的行
特征值与特征向量
A = np.array([[-1,1,0],[-4,3,0],[1,0,2]])
A
eig_values,f_vectors = np.linalg.eig(A)
eig_values
f_vectors
a = np.array([1,2,3,4,5,6,7,8])
np.diff(a)
from example.commons import Faker
from pyecharts import options as opts
from pyecharts.charts import Pie
c = (
Pie()
.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
.set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
#.render("pie_base.html")
)
c.render_notebook()