numpy 科学计算包

来源:互联网 发布:天刀捏脸数据下载 编辑:程序博客网 时间:2024/04/27 22:33

numpy 是python的科学计算包。
numpy里面的数组会将所有元素统一为同一类型的数据,只要数组中存在小数,整个数组的数据类型都是float,且输出的数组都是带小数点的。在numpy中,多维数组的输出格式直观,更容易理解。
用np.array来讲普通数组转化为numpy数组,然后进行数组的运算处理
这里写图片描述

这里写图片描述
numpy中可以直接生成一些特殊的数组,比如全0的数组,空数组,连续元素数组,单位矩阵等等。
这里写图片描述

数组与标量之间的运算会传递到数组中的每个元素,而且大小相等的数组之间的操作都会传递到数组中的每个元素。
这里写图片描述

访问numpy数组中的元素跟普通数组的一个区别是多维数组中arr[0,2]=arr[0][2]或arr[1,1,1]=arr[1][1][1], 普通数组中只能用后面的方法来访问数组元素。numpy里的切片操作与普通的切片差不多,只是注意数组的维度问题。
这里写图片描述

这里写图片描述
在numpy中的布尔值可以直接用来对数组中元素的操作
这里写图片描述

这里写图片描述
花式索引,是numpy的一个术语,指的是利用整数数组进行索引
这里写图片描述

这里写图片描述
ndarray 数组的转置(arr.T实现)和轴对换(arr.transpose()实现或arr.swapaxes()实现)
这里写图片描述

这里写图片描述

详细解释:
arr数组的内容为
- a[0][0] = [0, 1, 2, 3]
- a[0][1] = [4, 5, 6, 7]
- a[1][0] = [8, 9, 10, 11]
- a[1][1] = [12, 13, 14, 15]
transpose的参数为坐标,正常顺序为(0, 1, 2, … , n - 1),
现在传入的为(1, 0, 2)代表a[x][y][z] = a[y][x][z],即第0个和第1个坐标互换。
- a’[0][0] = a[0][0] = [0, 1, 2, 3]
- a’[0][1] = a[1][0] = [8, 9, 10, 11]
- a’[1][0] = a[0][1] = [4, 5, 6, 7]
- a’[1][1] = a[1][1] = [12, 13, 14, 15]

arr.swapaxes(1,2)表示第1个和第2个坐标互换,在数组中的表现就是arr[0]和arr[1]位置不变,内容转置
arr.swapaxes(0,1)表示第0个和第1个坐标互换,输出结果与上面的arr.transpose(1,0,2)相同

numpy的元素级数组函数

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

numpy数组可以将多种数据处理任务表述为简洁的数组表达式,避免了编写循环,用数组表达式代替循环的做法通常被称为矢量化。
矢量化的数组运算要比等价的纯python方式快一两个数量级
这里写图片描述

np.where(条件,结果1,结果2) 表示当条件成立的的时候返回结果1,当条件不成立的时候返回结果2.利用numpy下的where可以简化程序,将条件逻辑表达式转化为where和where的嵌套更加快捷方便的处理数据。

这里写图片描述

这里写图片描述

利用数组对数据进行处理;

这里写图片描述

这里写图片描述

这里写图片描述

cumsum:
cumsum (0)- 按列操作:a[i][j] += a[i - 1][j]
cumsum (1)- 按行操作:a[i][j] += a[i][j - 1]
cumprod:
cumprod (0)- 按列操作:a[i][j] *= a[i - 1][j]
cumprod (1)- 按行操作:a[i][j] *= a[i][j - 1]

对布尔型数组的处理:
这里写图片描述

sum对True值的个数进行计数
any和all 测试布尔型数组,只要有一个True,any就返回True,只有全部都为True时,all才会返回True.

利用数字进行数据排序
这里写图片描述

arr.sort()是对数组进行排序并保存在原arr数组中,而sorted(arr)是将arr排序而自身不会改变
这里写图片描述

利用数组对数据进行去重及其他的运算
这里写图片描述

这里写图片描述

np.in1d(x,y) 第三个字母是数字一不是字母L的小写

数组文件的输入输出,文件保存在与当前编写程序相同的路径下
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

reshape可以重塑数组,-1可以自动推导维度大小,ravel可以将多维度数组拉为一维数组
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

r_用于按行堆叠,c_用于按列堆叠,切片可以通过堆叠直接转为数组。
这里写图片描述
_repeat重复数组元素,_tile给数组贴标签后整体重复
这里写图片描述

花式索引的等价函数:
arr[L] = arr.take(L)
arr.take(L, axis=1) 将多维数组arr按数组L里面元素按轴1(行)进行提取重新形成新数组
arr.put(L, num) :将数组arr里面索引为L里面的元素的值全部设置为num
arr.put(L, Nnum) :将数组arr里面索引为L里面的元素的值设置为Nnum数组里面对应的元素
这里写图片描述

计算矩阵的特征值和特征向量
a = np.array([[1,2],[3,4]]) # 示例矩阵
A1 = np.linalg.eigvals(a) # 得到特征值
A2,B = np.linalg.eig(a) # 其中A2是特征值(一维数组),B为特征向量(多维数组)
得到的特征值A2[i]对应特征向量B[ : , i] (每个特征值对应于B上的对应列特征向量)
这里写图片描述

0 0
原创粉丝点击