numpy使用

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()

你可能感兴趣的:(numpy使用)