NumPy(Numerical Python)是Python的一种开源的数值计算扩展。提供多维数组对象,各种派生对象(如掩码数组和矩阵),这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
- 几乎所有从事Python工作的数据分析师都利用NumPy的强大功能。
- 强大的N维数组
- 成熟的广播功能
- 用于整合C/C++和Fortran代码的工具包
- NumPy提供了全面的数学功能、随机数生成器和线性代数功能
- 安装Python库
- 第一种方式:
- pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple - pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
- 第二种方式:- 直接安装[anaconda下载](https://www.anaconda.com/products/individual#Downloads)
- 注意:安装时!!! 添加一下环境变量~
* 百度网盘链接: https://pan.baidu.com/s/1sQ8LMH6q8ezVUzNjSCtgyQ 提取码: sm7m
- 启动终端
* Windows----> 快捷键:**win + R** ----->输入:**cmd**回车------>命令行出来
- Mac ---->启动终端
- 启动jupyter
- 进入终端输入指令:**jupyter notebook**
- 在哪里启动jupyter启动,浏览器上的目录,对应哪里,windows默认路径是:**C:\Users\lufengkun**
- **C:\Users\xxx**
第一部分 基本操作
第一节 数组创建
创建数组的最简单的方法就是使用array函数,将Python下的list转换为ndarray。
```python
import numpy as np
l = [1,3,5,7,9] # 列表
arr = np.array(l) # 将列表转换为NumPy数组
arr # 数据一样,NumPy数组的方法,功能更加强大
# 输出为
# array([1, 3, 5, 7, 9])
```
我们可以利用np中的一些内置函数来创建数组,比如我们创建全0的数组,也可以创建全1数组,全是其他数字的数组,或者等差数列数组,正态分布数组,随机数。
```python
import numpy as np
arr1 = np.ones(10) # 输出为:array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
arr2 = np.zeros(10) # 输出为: array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
arr3 = np.full(shape = [2,3],fill_value=2.718) #shape=[2,3]里面填充值为2.718数
# 输出为:
# array([[2.718, 2.718, 2.718],
# [2.718, 2.718, 2.718]])
arr4 = np.arange(start = 0,stop = 20,step = 2)
# 等差数列 输出为:array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
arr5 = np.linspace(start =0,stop = 9,num = 10)
# 等差数列 输出为:array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
arr6 = np.random.randint(0,100,size = 10)
# int随机数 输出为:array([ 4, 8, 79, 62, 34, 35, 2, 65, 47, 18])
np.random.randint(0,10,size=(3,5))#创建二维数组
#输出为:
array([[6, 8, 8, 4, 2],
[4, 6, 7, 4, 1],
[9, 4, 4, 2, 0]])
np.random.randint(0,10,size=(2,3,5))#创建三维数组
#输出为:
array([[[8, 1, 2, 7, 1],
[0, 2, 3, 0, 7],
[7, 1, 8, 7, 2]],
[[3, 2, 6, 3, 6],
[4, 6, 8, 0, 9],
[5, 1, 3, 0, 4]]])
arr7 = np.random.randn(5)
# 正态分布 输出为:array([ 0.57807872, 0.37922855, 2.37936837, -0.28688769, 0.2882854 ])
arr8 = np.random.random(size = 5)
# float 随机数 输出为:array([0.59646412, 0.37960586, 0.38077327, 0.76983539, 0.22689201])
np.set_printoptions(suppress=True)#不显示科学计数法
np.logspace(0,10,base=2,num=11)#等比数列,0到10,倍数为2,个数11个
#输出为:
array([ 1., 2., 4., 8., 16., 32., 64., 128., 256.,
512., 1024.])
```
第二节 查看操作
* jupyter扩展插件(不安装)
* pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple
* pip install jupyter_nbextensions_configurator -i https://pypi.tuna.tsinghua.edu.cn/simple
* jupyter contrib nbextension install --user
* jupyter nbextensions_configurator enable --user
* **退出,重新进入jupyter notebook就可以了**NumPy的数组类称为ndarray,也被称为别名 array。请注意,numpy.array这与标准Python库类不同array.array,后者仅处理一维数组且功能较少。ndarray对象的重要属性是
1.2.1 数组的轴数、维度
```python
import numpy as np
arr = np.random.randint(0,100,size = (3,4,5))
arr.ndim # 输出 3
```
1.2.2 数组尺寸形状
```python
import numpy as np
arr = np.random.randint(0,100,size = (3,4,5))
arr.shape # 输出 (3,4,5)
```
1.2.3 数组元素的总数
```python
import numpy as np
arr = np.random.randint(0,100,size = (3,4,5))
arr.size # 输出 3*4*5 = 60
```
1.2.4 数据类型
```python
import numpy as np
arr = np.random.randint(0,100,size = (3,4,5))
arr.dtype # 输出 dtype('int64')
```
1.2.5 数组中每个元素的大小(以字节为单位)
```python
import numpy as np
arr = np.random.randint(0,100,size = (3,4,5))
arr.itemsize #输出是 8 ,因为数据类型是int64,64位,一个字节是8位,所以64/8 = 8
```
第三节 文件IO操作
1.3.1 保存数组
save方法保存ndarray到一个npy文件,也可以使用savez将多个array保存到一个.npz文件中
```python
arr=np.arange(0,10,3)
np.save('./tata1',arr)#在当前文件夹下保存arr,取名为tata1
np.lo