0.1 Numpy介绍
NumPy(Numerical Python)是Python的⼀种开源的数值计算扩展。提供多维数组对象,各种派⽣对象(如掩码数组和矩阵),这种⼯具可⽤来存储和处理⼤型矩阵,⽐Python⾃身的嵌套列表(nested list structure)结构要⾼效的多(该结构也可以⽤来表示矩阵(matrix)),⽀持⼤量的维度数组与矩阵运算,此外也针对数组运算提供⼤量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输⼊输出、离散傅⽴叶变换、基本线性代数,基本统计运算和随机模拟等等。
0.1.1 Numpy的特点
提供了强大N维数组类型NDAarray 可以用来存储任意维度的数据;
集成了统计学、科学计算、线性代数、矩阵运算、矢量处理等算法
提供了成熟的⼴播功能和掩码数组运算
提供了强大的随机数⽣成功能
0.2 Numpy安装
安装 NumPy 最简单的方法就是使用 pip 工具:
pip3 install --user numpy scipy matplotlib
–user 选项可以设置只安装在当前的用户下,而不是写入到系统目录。
默认情况使用国外线路,国外太慢,我们使用清华的镜像就可以:
pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
Linux 下安装
Ubuntu & Debian
sudo apt-get install python3-numpy python3-scipy python3-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
CentOS/Fedora
sudo dnf install numpy scipy python-matplotlib ipython python-pandas sympy python-nose atlas-devel
Mac 系统
Mac 系统的 Homebrew 不包含 NumPy 或其他一些科学计算包,所以可以使用以下方式来安装:
pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
相关链接
NumPy 官网 http://www.numpy.org/
NumPy 源代码:https://github.com/numpy/numpy
SciPy 官网:https://www.scipy.org/
SciPy 源代码:https://github.com/scipy/scipy
Matplotlib 教程:Matplotlib 教程
Matplotlib 官网:https://matplotlib.org/
Matplotlib 源代码:https://github.com/matplotlib/matplotlib
0.2.1安装验证
测试是否安装成功:
import numpy as np
为了使用方便,也为了风格的统一,一般在导入后将 numpy 取一个别名为np
0.3 Numpy数组对象ndarray
0.3.1 ndarray介绍
• 数组(Array):同类性数据元素按一定顺序有序排列的集合称为数组
• NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列数组叠加组成的N维数组;
• NumPy最核心的数据类型是N维数组(The N-Dimensional Array)ndarry。
• 数组和列表一样,以 0 下标为开始进行索引
ndarray数组示意图:
- axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
在一维数组里axis=0表示x轴;
在二维数组里axis=1表示x轴,axis=0表示y轴;
在三位数组里axis=0表示z轴,axis=1表示x轴,axis=1表示z轴.
即:所见即所得。
axis=0 表示行(实际操作是列)
axis=1 表示列(实际操作是行)
0.3.2. 一维数组、二维数组、三位数组之间的区别
实例:
假设某比赛分A,B,C三个组。每组有参赛者5名,分别来自15个不同的国家。
*一维数组
对于A组来说,一维数组相当于建立一个姓名列表 name =[‘参赛者A1’,‘参赛者A2’,…,‘参赛者A5’],列表里有5个元素,代表五个参赛者。
*二维数组
接着上面的,对于A组来说,二维数组相当于建立一个 姓名-国籍 数组
输出的(5, 2)表示,5行2列。意思是五个参赛者除了姓名属性外,还有国籍属性。有几个属性就有几列。相当于数据库表里的字段,有几个字段数据库表就有几列。
import numpy as np
nameCountry= np.array([[‘参赛者A1’,‘国籍A1’],
[‘参赛者A2’,‘国籍A2’],
[‘参赛者A3’,‘国籍A3’],
[‘参赛者A4’,‘国籍A4’],
[‘参赛者A5’,‘国籍A5’]])
print(nameCountry)
print(nameCountry.shape)
输出为:
[[‘参赛者A1’ ‘国籍A1’]
[‘参赛者A2’ ‘国籍A2’]
[‘参赛者A3’ ‘国籍A3’]
[‘参赛者A4’ ‘国籍A4’]
[‘参赛者A5’ ‘国籍A5’]]
(5, 2)
*三维数组
在上面两个的基础上。每组参赛者都有姓名-国籍属性,有三组,就形成了三维数组。代码如下:
import numpy as np
nameCountrys = np.array([
[[‘参赛者A1’,‘国籍A1’],[‘参赛者A2’,‘国籍A2’],[‘参赛者A3’,‘国籍A3’],[‘参赛者A4’,‘国籍A4’],[‘参赛者A5’,‘国籍A5’]],
[[‘参赛者B1’,‘国籍B1’],[‘参赛者B2’,‘国籍B2’],[‘参赛者B3’,‘国籍B3’],[‘参赛者B4’,‘国籍B4’],[‘参赛者B5’,‘国籍B5’]],
[[‘参赛者C1’,‘国籍C1’],[‘参赛者C2’,‘国籍C2’],[‘参赛者C3’,‘国籍C3’],[‘参赛者C4’,‘国籍C4’],[‘参赛者C5’,‘国籍C5’]]
])
print(nameCountrys)
print(nameCountrys.shape)
输出为:
[[‘参赛者A1’ ‘国籍A1’]
[‘参赛者A2’ ‘国籍A2’]
[‘参赛者A3’ ‘国籍A3’]
[‘参赛者A4’ ‘国籍A4’]
[‘参赛者A5’ ‘国籍A5’]]
(5, 2)
[[[‘参赛者A1’ ‘国籍A1’]
[‘参赛者A2’ ‘国籍A2’]
[‘参赛者A3’ ‘国籍A3’]
[‘参赛者A4’ ‘国籍A4’]
[‘参赛者A5’ ‘国籍A5’]]
[[‘参赛者B1’ ‘国籍B1’]
[‘参赛者B2’ ‘国籍B2’]
[‘参赛者B3’ ‘国籍B3’]
[‘参赛者B4’ ‘国籍B4’]
[‘参赛者B5’ ‘国籍B5’]]
[[‘参赛者C1’ ‘国籍C1’]
[‘参赛者C2’ ‘国籍C2’]
[‘参赛者C3’ ‘国籍C3’]
[‘参赛者C4’ ‘国籍C4’]
[‘参赛者C5’ ‘国籍C5’]]]
(3, 5, 2)
总结:其实一维就是只有一个属性,一种特征;二维就是有多个属性,多个特征;三维即有多组,每组的属性相同。
0.4 ndarray的创建
创建一个 ndarray 只需调用 NumPy 的 array 函数即可:
np.array(object, dtype=None, copy=True) 根据object的维度和值创建数组,默认
复制数据
参数
– object: 一个数组或形状类似数组的结构,如列表等
– dtype: 数据类型
实例 1
import numpy as np
a = np.array([1,2,3])
print (a)
输出结果如下:
[1 2 3]
实例 2
多一个维度
import numpy as np
a = np.array([[1, 2], [3, 4]])