章节内容
什么是NumPy模块和NumPy数组
创建数组
基本数据类型
数据可视化
索引和切片
副本和视图
目录
什么是NumPy模块和NumPy数组?
创建数组
基本数据类型
数据可视化
索引和切片
副本和视图
什么是NumPy模块和NumPy数组?
NumPy数组
python对象 |
|
NumPy提供: |
|
计算效率大幅度提高
每个循环 178 μs ± 3.98 μs(7 次运行,每次 10,000 次循环)。
NumPy 参考文档
- 一个外国的文档:NumPy Documentation
- 怎么查询一个numpy中的关键词
- 交互式的帮助
创建数组
利用arange手动构建数组
利用linspace创建数组
用特殊的方法创建特殊数组
- 利用zeros(n)创建一个n个元素的数组
- 利用zeros((n,m))创建多维数组
- 利用eye((n,m))创建多维数组
- 利用diag((n,m))创建多维数组(方阵)
基本数据类型
复数类型: | d = np.array([1+2j, 3+4j, 5+6*1j]) d.dtypedtype('complex128') |
---|---|
布尔数据类型: | e = np.array([True, False, False, True]) e.dtypedtype('bool') |
字符串类型: | f = np.array(['Bonjour', 'Hello', 'Hallo']) f.dtype # <--- strings containing max. 7 letters dtype('S7') |
更多: |
|
数据可视化
-
导入包
import matplotlib.pyplot as plt
-
数据的输入
x = np.linspace(0,3,20)
y = np.linspace(0,8,20)
- 绘制图形
plt.plot(x,y)
- 一个有趣的实验
image = np.random.rand(30,30)
plt.imshow(image,plt.cm.hot)
索引和切片
创建一个数组之后,因为numpy几乎继承了python中的list容器中所有特性,其切片和list容器的切片操作类似,这里就不展开了,直接用图来展示。
副本和视图
我们创建一个切片之后,得到的numpy数组和原来的数组是共享同一块内存空间,所以修改任意一个numpy数组中的数据,另外的一个numpy数组也会被修改。
- 调用np.map_share_memory(a,b),可以查看两个数组是否共用一个内存空间
a = np.arange(10)
>>> aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = a[::2]
>>> b
array([0, 2, 4, 6, 8])
>>> np.may_share_memory(a, b)
True
- 如果不想共享同一块内存空间
a = np.arange(10)
>>> c = a[::2].copy()
c[0] = 0
>>> np.may_share_memory(a, c)
False