提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、NumPy中常见的模块
1.求和、求积以及进行差分的模块
名称 | 功能 |
prod() | 返回指定轴上的数组元素的乘积 |
sum() | 返回指定轴上的数组元素的总和 |
cumprod() | 返回沿给定轴的元素的累计乘积 |
cumsum() | 返回沿给定轴的元素的累计总和 |
diff() | 计算沿指定轴的离散差分 |
gradient() | 返回数组的梯度 |
cross() | 返回两个(数组)向量的叉积 |
trapz() | 使用复合梯度规则沿给定轴积分 |
mean() | 算术平均数 |
2.线性代数模块
名称 | 功能 |
dot() | 计算两个数组的点积 |
vdot() | 计算两个向量的点积 |
inner() | 计算两个数组的内积 |
matmul() | 计算两个数组的矩阵积 |
determinant() | 计算数组的行列式 |
solve() | 计算线性矩阵方程 |
inv() | 计算矩阵的乘法逆矩阵 |
3.常见的随机函数模块
名称 | 功能 |
seed() | 确定随机数生成器 |
permutation() | 返回一个序列的随机排序或返回一个随机排列的范围 |
normal() | 产生正态分布的样本值 |
binomial() | 产生二项分布的样本值 |
rand() | 返回一组随机值,根据未定维度生成 [ 0, 1)的数据 |
randn() | 返回一个样本,具有标准正态分布 |
randint(low[, high, size]) | 返回随机的整数,位于半开区间 [ low, high) |
random_integers(low[, high, size]) | 返回随机的整数,位于闭区间 [ low, high ] |
random() | 返回随机的浮点数,位于半开区间 [ 0.0, 1.0) |
bytes() | 返回随机字节 |
二、使用例子
1.点积和内积
计算两个数组的点积,对于一维数组,它是向量的内积;对于二维数组,其等效于矩阵乘法。
这里计算的点积的计算公式为:
[[ 1 * 10 + 2 * 30, 1 * 20 + 2 * 40 ], [ 3 * 10 + 4 * 30, 3 * 20 + 4 * 40]]
代码如下:
import numpy.matlib
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[10,20],[30,40]])
np.dot(a,b)
print(np.dot(a,b))#两个数组的点积运算
运行结果如下:
[[ 70 100]
[150 220]]
2.随机函数的使用
根据给定维度随机生成 [ 0, 1 )的数据,即包含 0,不包含 1。
代码如下:
import numpy as np
a = np.random.rand(5,2)
print(a)
运行结果如下:
[[0.51499268 0.55125435]
[0.02822255 0.2756882 ]
[0.90557536 0.83852284]
[0.13986003 0.92548228]
[0.6519275 0.23981899]]
3.np.arange( )函数创建数组
4.np.reshape()函数塑形
使用np.arange( )函数快速创建以下两个数组:第1个是含0-9 数值的数组,第2个是从2开始,200以内,等差值为10的数组。然后再把这第一个数组重塑成2行,把第二个数组重塑成4行。
代码如下:
import numpy as np
a = np.arange(10) #第1个是含0-9 数值的数组
b = np.arange(2,200,10) #第2个是从2开始,200以内,等差值为10的数组
x = np.arange(10).reshape(2,5) #reshape是塑形工具(行数,列数)
y = np.arange(2,200,10) .reshape(4,5)
print("第1个数组:", a)
print("第2个数组:", b)
print("第1个数组的变形:\n", x)
print("第2个数组的变形:\n", y)
5.创建全0数组
创建4*4的全0数组,数据类型为float。
import numpy as np
a0 = np.zeros([4,4], dtype=float) #创建4*4的全0数组,数据类型为float
#print(a0)
6.数组交换元素
将数组中第1行第1列元素赋值3,第2行第2列元素赋值6,第3行第3列元素赋值9,第4行第4列元素赋值12。对这个数组交换第1行和第2行,交换第1列和第2列。
代码如下:
#将数组中第1行第1列元素赋值3,第2行第2列元素赋值6,第3行第3列元素赋值9,第4行第4列元素赋值12
a0[0][0]=3
a0[1][1]=6
a0[2][2]=9
a0[3][3]=12
print("将数组中第1行第1列元素赋值3,第2行第2列元素赋值6,第3行第3列元素赋值9,第4行第4列元素赋值12:")
#a0
#对这个数组交换第1行和第2行
a0[[0,1]] = a0[[1,0]]
#对这个数组交换第1列和第2列
a0[ :,[0,1]] = a0[ :,[1,0]]
6.数组间的四则计算
创建一个维数为5*5,数值取值范围是 [0,1)的随机数组;创建一个维数为5*5,数值服从正态分布的随机数组;对创建的两个数组进行四则运算。
代码如下:
import numpy as np
d = np.random.random(55) #创建一个维数为5*5,数值取值范围是 [0,1)的随机数组
#print(d)
f = np.random.randn(55) #创建一个维数为5*5,数值服从正态分布的随机数组
#print(f)
#两个数组的加法运算:
print(d + f)
#两个数组的减法运算:
print(d - f)
#两个数组的乘法运算:
print(d * f)
#两个数组的除法运算:
print(d / f)
7.数组求和
一个数组为[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]。 第二个数组为相同维度,范围0到60,步长为5,对第二个数组进行求和,输出三种求和:全部求和、按行求和、按列求和。
#创建一个数组A为[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
#第二个数组B为相同维度,范围0到60,步长为5
B = np.arange(0,60,5).reshape(4,3)
7.1全部求和
#第二个数组全部求和:
print(np.sum(B))
7.2按行求和
#第二个数组按行求和:
value = np.sum(B, axis=1)
print(value)
7.3按列求和
#第二个数组按列求和:
value = np.sum(B, axis=0)
print(value)
8.矩阵合并
构造4*4的全1矩阵和单位矩阵,将两个数组垂直(按列)合并;将两个数组水平(按行)合并
import numpy as np
a1 = np.ones([4,4]).reshape(4, 4) #构造4*4的全1矩阵
e = np.eye(4).reshape(4, 4) #构造4*4的单位矩阵
8.1垂直(按列)合并
value1 = np.concatenate((a1, e), axis=1)
print(value1)
8.2水平(按行)合并
value1 = np.concatenate((a1, e), axis=0)
print(value1)
总结
以上就是今天要讲的内容,本文仅仅简单介绍了numpy的部分使用,而numpy提供了大量能使我们快速便捷地处理数据的函数和方法。
有不对的地方欢迎各位大神指正。