NumPy基础:数组和矢量计算

约定:import numpy as np

ndarray:多维数组对象


1.创建ndarry对象

使用array函数

NumPy基础:数组和矢量计算_第1张图片
列表转换

嵌套序列转换为多维数组


NumPy基础:数组和矢量计算_第2张图片
嵌套序列转换

np.array会尝试为新建数组推断出最为合适的类型,除非有显式说明

NumPy基础:数组和矢量计算_第3张图片
dtype

zeros和ones分别可创建指定长度和形状的全0或全1数组,empty可创建空数组

NumPy基础:数组和矢量计算_第4张图片
zeros()


NumPy基础:数组和矢量计算_第5张图片
empty()返回的是为初始化的垃圾值,而非全0

arange

eye/identity创建一个正方形的n*n单位矩阵

NumPy基础:数组和矢量计算_第6张图片
单位矩阵

2.ndarray的数据类型dtype


NumPy基础:数组和矢量计算_第7张图片
指定数据类型


NumPy基础:数组和矢量计算_第8张图片
显示转换数据类型

浮点数转整数,小数部分会被截断

字符串数组若表示的全是数字,可转换为数值类型


3.数组和标量之间的运算


NumPy基础:数组和矢量计算_第9张图片
数组和数组之间运算


NumPy基础:数组和矢量计算_第10张图片
数组和标量的运算

4.索引和切片


NumPy基础:数组和矢量计算_第11张图片
将标量赋值给切片:广播到整个选区


NumPy基础:数组和矢量计算_第12张图片

二维数组:arr[0][2]等价于arr[0,2]

切片索引:

NumPy基础:数组和矢量计算_第13张图片
在一个轴上切片
NumPy基础:数组和矢量计算_第14张图片
多个切片


NumPy基础:数组和矢量计算_第15张图片
整数索引和切片混合:对低维轴进行切片

只有冒号表示选取整个轴

NumPy基础:数组和矢量计算_第16张图片
对高维轴进行切片

对切片表达式的赋值操作

NumPy基础:数组和矢量计算_第17张图片

5.布尔型索引


NumPy基础:数组和矢量计算_第18张图片
每个名字对应data数组中的一行


数组的比较运算“==”是矢量化的,产生布尔型数组


NumPy基础:数组和矢量计算_第19张图片
布尔型数组用于数组索引,布尔型数组的长度必须跟被索引的轴长度一致


NumPy基础:数组和矢量计算_第20张图片
布尔型数组跟切片、整数混合使用


NumPy基础:数组和矢量计算_第21张图片
选择除bob以外的其他值,"!=","~"进行否定


NumPy基础:数组和矢量计算_第22张图片
应用多个布尔条件


NumPy基础:数组和矢量计算_第23张图片
通过布尔型数组设置值


NumPy基础:数组和矢量计算_第24张图片
通过一维布尔数组设置整行或列的值

6.花式索引:利用整数数组进行索引


NumPy基础:数组和矢量计算_第25张图片
以特定顺序选取子集,传入用于指定顺序的整数列表


NumPy基础:数组和矢量计算_第26张图片
负数索引从末尾开始选取行

传入多个索引数组,返回一个一维数组

NumPy基础:数组和矢量计算_第27张图片
选取(1,0),(5,3),(7,1),(2,2)


NumPy基础:数组和矢量计算_第28张图片
 选取方形区域


NumPy基础:数组和矢量计算_第29张图片
np.ix_函数选取方形区域

花式索引与切片不同,总是将数据复制到新数组中

7.数组转置和轴对换

转置:返回源数据的视图(不进行任何复制操作)


NumPy基础:数组和矢量计算_第30张图片
数组转置,简单地转置可以使用.T(进行轴对换)


NumPy基础:数组和矢量计算_第31张图片
利用np.dot()计算内积


NumPy基础:数组和矢量计算_第32张图片
对于高维数组,transpose需要得到一个由轴编号组成的元组才能进行转置


NumPy基础:数组和矢量计算_第33张图片
使用swapaxes方法转置,需要接受一堆轴编号,返回源数据的视图

8.通用函数ufunc

是对ndarray中的数据执行元素级运算的函数,可以看做是简单函数的矢量化包装器


NumPy基础:数组和矢量计算_第34张图片
一元ufunc
NumPy基础:数组和矢量计算_第35张图片
二元ufunc


NumPy基础:数组和矢量计算_第36张图片
sqrt、exp


NumPy基础:数组和矢量计算_第37张图片
元素级最大值


NumPy基础:数组和矢量计算_第38张图片
modf返回两个数组

9.利用数组进行数据处理

矢量化:用数组表达式代替循环

NumPy基础:数组和矢量计算_第39张图片
meshgrid函数接受两个一维数组,并产生两个二维矩阵,


NumPy基础:数组和矢量计算_第40张图片
计算x^2+y^2


NumPy基础:数组和矢量计算_第41张图片
图形化显示


NumPy基础:数组和矢量计算_第42张图片

9.1 将条件逻辑表述为数组运算

根据cond中的值选取xarr和yarr中的值:当cond中的值为true时,选取xarr的值,否自选取yarr的值

NumPy基础:数组和矢量计算_第43张图片

但对大数组处理速度不够快,无法用于多维数组

使用np.where

NumPy基础:数组和矢量计算_第44张图片
np.where第二第三个参数不必是数组,可以是标量

where通常用于根据另一个数组而产生一个新数组

NumPy基础:数组和矢量计算_第45张图片
将所有正值替换为2,负值替换为-2


NumPy基础:数组和矢量计算_第46张图片
只将正值设置为2

9.2数学和统计方法

NumPy基础:数组和矢量计算_第47张图片
基本数组统计方法
NumPy基础:数组和矢量计算_第48张图片
cumsum cumprod

9.3用于布尔型数组的方法

NumPy基础:数组和矢量计算_第49张图片
用sum对布尔型数组中的true值计数


NumPy基础:数组和矢量计算_第50张图片
any测试数组中是否存在true,all检查数组中是否所有值都是true

9.4排序

NumPy基础:数组和矢量计算_第51张图片
就地排序sort

多维数组可以再任何一个轴向上进行排序


NumPy基础:数组和矢量计算_第52张图片

顶级方法np.sort返回的是数组的已排序副本,而就地排序会修改数组本身

9.5唯一化以及其他的集合逻辑

NumPy基础:数组和矢量计算_第53张图片
数组的集合运算

10.用于数组的文件输入输出

将数组以二进制格式保存到磁盘

默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中

np.save写磁盘数组数据

如果文件路径末尾没有.npy,则该扩展名会被自动加上

np.load读取磁盘上的数组

保存多个数组

NumPy基础:数组和矢量计算_第54张图片
np.savez将多个数组保存到一个压缩文件中

11.线性代数

NumPy基础:数组和矢量计算_第55张图片
dot函数:矩阵乘法
NumPy基础:数组和矢量计算_第56张图片
numpy.linalg函数

12.随机数生成

NumPy基础:数组和矢量计算_第57张图片
numpy.random

你可能感兴趣的:(NumPy基础:数组和矢量计算)