1 Numpy介绍
- Numpy(Numerial Python) 用于快速处理任意维度的数组
- 支持常见的数组和矩阵操作,同样的数值计算任务比直接使用python简洁
- 使用ndarray对象来处理多维数组
2 ndarray介绍
- ndarray是Numpy的一个N维数组类型ndarray,它描述了相同类型的“items”的集合
- 举例:学生分数
用ndarray进行存储:
import numpy as np
# 创建ndarray
score = np.array(
[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
score
返回结果:
array([[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])
3 ndarray与Python原生list运算效率对比
- 通过以下代码进行对比
import random
import time
import numpy as np
a = []
for i in range(100000000):
a.append(random.random())
# 通过%time魔法方法, 查看当前行的代码运行一次所花费的时间
%time sum1=sum(a)
b=np.array(a)
%time sum2=np.sum(b)
结果:
CPU times: user 852 ms, sys: 262 ms, total: 1.11 s
Wall time: 1.13 s
CPU times: user 133 ms, sys: 653 µs, total: 133 ms
Wall time: 134 ms
注:数组越大,Numpy的优势就越明显
4 ndarray的优势
- 内存块分格
ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下 一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list。
- ndarray支持并行化运算(向量化运算),numpy会自动做并行计算
- ndarray底层是用C语言写的,效率更高,释放了GIL