NumPy基础
一.数组基础
整数和浮点数相互转换(astype)
数组维度(.shape和.reshape)
- ones((2,5))是创建一个两行五列的全是一的数组
- arange(10)是创建一个从0到9的一维数组
- 一维数组称之为向量,二维数组成为矩阵
二.数组的创建
创建数组
创建同值数组,ones,zeros
随机数组
三.数组的索引
向量的花式索引
- 下图表示先创建一个从0到90(左闭右开),步长为10的向量
- 第二句表示选取向量之中第0个和第2个索引的元素(注意括号是两个,一般如果只有一个中括号,那么里面不能出现两个值,只能出现一个值代表选取一个元素)
矩阵的花式索引
- 下图表示创建一个从1到17(左闭右开)的矩阵,然后变成4*4的矩阵
- 第二句也有两个中括号,两个
- 第一个中括号规定行,第二个中括号规定列,比如In[30]表示分别选取第0行第0列的元素,和第2行第二列的元素
- In[31]表示选取第一行第二列的元素和第二行第三列的元素
- 下图的例子中,一个括号里面有三个值,代表选取三个元素
向量的切片
矩阵的切片
提取矩阵的行和列
- 提取矩阵的行
- 提取矩阵的列
数组的切片仅仅是视图
- 与 Python 列表和 Matlab 不同,NumPy 数组的切片仅仅是原数组的一个视图。换言之,NumPy 切片并不会创建新的变量
- 如果需要对切片进行拷贝,就需要==arr.copy()==方法创建一个新切片
数组的赋值仅仅是绑定
- 数组的赋值仅仅是绑定,也就是如果出现 arr1=arr2,那么修改arr1的值,arr2也会跟着修改,两者是通过一个东西
- 如果要创建新的数组变量,那么就需要在赋值的时候运用arr.copy()方法
四.数组的变形
转置
arr.T
数组的转置方法为 .T,其只对矩阵有效,因此遇到向量要先将其转化为矩阵。
(左右/上下)翻转
- 注意是arr2 = np.fliplr(arr1)
数组的翻转方法有两个,一个是**上下翻转的 np.flipud( ) ,表示 up-down**;一个是**左右翻转的 np.fliplr( ),表示 left-right**。其中,向量只能使用 np.flipud( ),在数学中,向量并不是横着排的,而是竖着排的。
数组的重塑
arr.reshape()
数组的拼接
- concatenate([],[],axis=) concatenate(arr1,arr2,axis=)
- 默认参数axis=0表示在行的方向上合并,axis=1表示在列的方向上合并
数组的分裂
np.split()
- 在行方向上合并
- 在列方向上合并
五.数组的运算
普通运算
广播
- 向量广播为矩阵
- 列矩阵广播为矩阵
- 行列矩阵同时被广播
六.数组的函数
np.dot(arr1,arr2)
向量与向量的乘积
向量与矩阵的乘积
矩阵与向量的乘积
矩阵与矩阵的乘积
数学函数
聚合函数
- axis=0维度x轴 表示按照行方向打印结果
- axis=1维度y轴 表示按照列方向打印结果
- np.sum求和
- np.prod求积