一:NumPy简介
• 官网链接:http://www.numpy.org/
• NumPy教程链接:https://www.yiibai.com/numpy/
• NumPy是Python语言的一个扩充程序库。支持高级大量的多维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
NumPy – MatLab 的替代之一
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用。 这种组合广泛用于替代 MatLab,是一个流行的技术计算平台。
但是,Python 作为 MatLab 的替代方案,现在被视为一种更加现代和完整的编程语言。
二:NumPy基本功能
• 快速高效的多维数组对象ndarray
• 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
• 用于读写硬盘上基于数组的数据集的
• 线性代数运算、傅里叶变换,以及随机数生成
-
傅立叶变换和用于图形操作的例程。
-
与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
三:效率对比
• 三种数据结构:list / array / numpy.array
• 三种方法求和:for / sum / numpy.sum
import timeit common_for = """ for d in data: s += d """ common_sum = """ sum(data) """ common_numpy_sum = """ numpy.sum(data) """ def timeit_list(n, loops): list_setup = """ import numpy data = [1] * {} s = 0 """.format(n) print 'list:' print timeit.timeit(common_for, list_setup, number = loops) print timeit.timeit(common_sum, list_setup, number = loops) print timeit.timeit(common_numpy_sum, list_setup, number = loops) def timeit_array(n, loops): array_setup = """ import numpy import array data = array.array('L', [1] * {}) s = 0 """.format(n) print 'array:' print timeit.timeit(common_for, array_setup, number = loops) print timeit.timeit(common_sum, array_setup, number = loops) print timeit.timeit(common_numpy_sum, array_setup, number = loops) def timeit_numpy(n, loops): numpy_setup = """ import numpy data = numpy.array([1] * {}) s = 0 """.format(n) print 'numpy:' print timeit.timeit(common_for, numpy_setup, number = loops) print timeit.timeit(common_sum, numpy_setup, number = loops) print timeit.timeit(common_numpy_sum, numpy_setup, number = loops) if __name__ == '__main__': timeit_list(50000, 500) timeit_array(50000, 500) timeit_numpy(50000, 500)
运行结果:
list: 0.94836021896 0.126542218145 1.25408217549 array: 2.02870422344 1.4137293358 5.92805967058 numpy: 3.81213793067 2.90964482707 0.0174179931709
四:NumPy的Ndarray对象(N 维数组类型)
基本的ndarray
是使用 NumPy 中的数组函数创建的,如下所示:
它从任何暴露数组接口的对象,或从返回数组的任何方法创建一个ndarray。
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
上面的构造器接受以下参数:
序号 | 参数及描述 |
---|---|
1. | object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。 |
2. | dtype 数组的所需数据类型,可选。 |
3. | copy 可选,默认为true ,对象是否被复制。 |
4. | order C (按行)、F (按列)或A (任意,默认)。 |
5. | subok 默认情况下,返回的数组被强制为基类数组。 如果为true ,则返回子类。 |
6. | ndimin 指定返回数组的最小维数。 |