Numpy学习笔记001
一、Numpy 库简介
NumPy是Python中科学计算的基础包。它是一个功能强大的Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。在数据分析和机器学习等领域被广泛应用,有以下几个特点:
- numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算。
- Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
- NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。
- 实用的线性代数、傅里叶变换和随机数生成函数等。
Numpy 1.21官方手册:https://numpy.org/doc/1.21/
二、Numpy 库安装
安装python环境后可以直接使用 pip 安装
pip install numpy
如果有Anaconda环境,也可以使用conda安装,在Anaconda Prompt界面输入以下代码即可
conda install numpy
三、Numpy 数组和python 列表
1. Numpy 中的数组的使用跟Python 中的列表之间的区别
- 一个列表中可以存储多种数据类型。比如
a = [1,'a'] 是允许的,而数组只能存储同种数据类型。 - 数组可以是多维的,当多维数组中所有的数据都是数值类型的时候,相当于线性代数中的矩阵,是可以进行相互间的运算的。
2. 两者性能对比
我们可以分别用Numpy和python计算相同的公式,用时间戳比较两者时间即可看出两者性能差异。例如我们想要对一个Numpy数组和Python列表中的100万个数求平方。那么代码如下: (使用的是jupyter notebook )
import numpy as np
import time
t1 = time.time()
a = []
for i in range(1000000):
a.append(i**2)
t2 = time.time()
print(t2-t1)
t3 = time.time()
c = np.arange(1000000)**2
t4 = time.time()
print(t4-t3)
由于环境或设备等其他因素的影响计算的结果不一定和上述的相同,但是Numpy都应该要比python列表快100倍左右,可见使用numpy数组在速度性能方面比python列表更优。
|