Jupyternotebook的使用
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
快捷键
- 运行 - shif+enter
绘制饼图
- 生成名字列表 9个人 A、B、C、D
- 随机生成这9个人擅长使用王者荣耀英雄池的个数(120))
- 绘制擅长英雄占比图
import string
string.ascii_uppercase
# 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.ascii_uppercase[:9]
# 'ABCDEFGHI'
labels = [ x for x in string.ascii_uppercase[:9]]
labels
# ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
from random import randint
values = [randint(0, 121) for _ in range(9)]
values
# [23, 103, 68, 7, 73, 96, 86, 46, 87]
plt.pie(values,labels=labels,autopct='%1.1f%%',shadow=True)
plt.axis('equal')
plt.legend()
plt.title('王者荣耀玩家擅长英雄占比图')
plt.show()
jupyternotebook魔法命令
%timeit 用于测量代码的运行时间
%timeit后面只能接一句话
%timeit L = [i**2 for i in range(1000)]
# 361 µs ± 7.92 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit L = [i**2 for i in range(1000)] #loop循环的次数由jpyter内核自己决定
# 361 µs ± 4.93 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
接多行的写法%%timeit
%%timeit
L = []
for i in range(1000):
L.append(i**2)
# 410 µs ± 16.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
从上面的测试可以看出,列表推到式速度高于普通for循环
Numpy
NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。
导入
import numpy as np
# 创建一个ndarray;类型
nparr = np.array([0, 1, 2, 3])
nparr
# array([0, 1, 2, 3])
type(nparr)
# numpy.ndarray
python中list
L = [i for i in range(10)]
L
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list的特点是对存储数据的类型不做约束, 优点是灵活, 缺点是性能不足
%timeit L2 = [i for i in range(1000000)]
# 88.1 ms ± 2.51 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit L3 = np.arange(1000000)
# 2.58 ms ± 146 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
创建ndarray的方式
1.传入列表
np.array([1, 2, 6, 4])
# array([1, 2, 6, 4])
2.传入列表推导式
np.array([i for i in range(10)])
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
3.使用arange() 类似range
x = np.arange(10)
x
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
创建矩阵
X =np.arange(0,16).reshape((4, 4))
X
# array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11],
# [12, 13, 14, 15]])
ndarray的常用属性
# ndim是数据的维度
x.ndim
1
X.ndim
2
# 形状
x.shape
(10,)
X.shape
(4, 4)
# 元素的个数
x.size
# 10
X.size
# 16