Numpy学习笔记001


目录

  • Numpy学习笔记001
  • 一、`Numpy`库简介
  • 二、`Numpy`库安装
  • 三、`Numpy`数组和`python`列表
  • 1. `Numpy`中的数组的使用跟`Python`中的列表之间的区别
  • 2. 两者性能对比


一、Numpy库简介

NumPy是Python中科学计算的基础包。它是一个功能强大的Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。在数据分析和机器学习等领域被广泛应用,有以下几个特点:

  1. numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算。
  2. Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
  3. NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。
  4. 实用的线性代数、傅里叶变换和随机数生成函数等。

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)
#结果为0.30385828018188477
t3 = time.time()
c = np.arange(1000000)**2
t4 = time.time()
print(t4-t3)
#结果为0.003023862838745117

由于环境或设备等其他因素的影响计算的结果不一定和上述的相同,但是Numpy都应该要比python列表快100倍左右,可见使用numpy数组在速度性能方面比python列表更优。