天津网站网站建设,机械加工网瓦房北方机床附件厂,大学毕业做网站插画师好吗,wordpress如何付费阅读文章目录 1.为什么要学习NumPy2.NumPy的数组变换以及索引访问3.NumPy筛选使用介绍筛选出上面nb数组中能被3整除的所有数筛选出数组中小于9的所有数提取出数组中所有的奇数数组中所有的奇数替换为-1二维数组交换2列生成数值5—10#xff0c;shape 为(3,5)的二维随机浮点数 NumP… 文章目录 1.为什么要学习NumPy2.NumPy的数组变换以及索引访问3.NumPy筛选使用介绍筛选出上面nb数组中能被3整除的所有数筛选出数组中小于9的所有数提取出数组中所有的奇数数组中所有的奇数替换为-1二维数组交换2列生成数值5—10shape 为(3,5)的二维随机浮点数 NumPy数组维度等进阶操作NumPy做矩阵乘法实现的两种方法NumPy求平均值求和NumPy 求标准差方差NumPy 求最大最小值累和和累乘NumPy求迹高维数组变为向量增加或删除维度的实现方法 1.为什么要学习NumPy
通过一个案例来比较分析numpy和python的数值计算性能
import time
import numpy as nplist range(int(10e6))tis1 time.perf_counter()
a [i*2 for i in list]
tis2 time.perf_counter()print(tis2-tis1)na np.array(range(int(10e6)))tis1 time.perf_counter()
na2 na * 2
tis2 time.perf_counter()
print(tis2-tis1)通过上面的案例 可以看出 NumPy 的数值计算能力比python自带的要快一个数量级所以NumPy 值得我们学习它。
2.NumPy的数组变换以及索引访问
# 创建一个所有元素为True 二维数组
a np.ones((3,5)) 1
print(a)# 创建一个所有元素为Flase 二维数组
b np.zeros((3,5)) 1
print(b)#一维数组转二维
na np.arange(100)
print(na)
nb na.reshape((20,5))
print(nb)#numpy 索引#访问第一行第一列的元素
print(nb[1,1])#返回第一行数组
print(nb[0])#返回数组的前3行(切片
print(nb[:3])#返回数组的第一列
print(nb[:,0])#返回数组的前3列
print(nb[:,:3])#返回数组前3行前3列
print(nb[:3,:3])3.NumPy筛选使用介绍
筛选出上面nb数组中能被3整除的所有数
print(nb[nb % 3 0])筛选出数组中小于9的所有数
print(nb[nb 9])提取出数组中所有的奇数
print(nb[nb % 2 ! 0])数组中所有的奇数替换为-1
#numpy 中 where的使用 3个参数 类似 三目运算符 第一个参数是条件表达式 第二个是符合条件表达式的结果 第三个是不符合的结果
print(np.where(nb % 2 0, nb, -1))二维数组交换2列
#交换第一列和第三列
print(nb[:, [0, 3, 2, 1, 4]])mask list(range(5))
mask[1], mask[3] mask[3], mask[1]
print(nb[:, mask])生成数值5—10shape 为(3,5)的二维随机浮点数
n1 np.random.randint(5, 10, (3, 5))
print(n1)# 0,1 的二维随机数组
n2 np.random.rand(3, 5)print(n1 n2)NumPy数组维度等进阶操作
NumPy做矩阵乘法实现的两种方法
v1 np.arange(3).reshape(1, 3)
v2 np.arange(6).reshape(3, 2)# 点乘
result np.dot(v1,v2)# 先将数组转化为矩阵
result1 np.matrix(v1) * np.matrix(v2)print(result)
print(result1)NumPy求平均值求和
arr np.random.randint(1, 10, (3, 4))# 所有数的平均值
arr.mean()# 按照行求平均值
arr.mean(axis1)# 按照列求平均值
arr.mean(axis0)#求和
arr.sum(axis0)
arr.sum(axis1)NumPy 求标准差方差
arr np.arange(6).reshape(2, 3)# 标准差
print(arr.std(axis 1))
# 方差
print(arr.var())NumPy 求最大最小值累和和累乘 array np.random.randint(1,50,(3,4))array.max()array.min()# 累和arr [1,3,5]# 累和后arr [1,4,9]#累加array.cumsum(axis 0)# 累乘array.cumprod(axis 0)
NumPy求迹
在Python的NumPy库中可以使用numpy.trace()函数来计算矩阵的迹trace。迹是矩阵对角线上元素的和。
以下是使用NumPy计算矩阵迹的示例代码
import numpy as np# 创建一个矩阵
matrix np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 计算矩阵的迹
trace np.trace(matrix)print(矩阵迹:, trace)输出结果
矩阵迹: 15在这个示例中我们创建了一个3x3的矩阵然后使用np.trace()函数计算了矩阵的迹。最后我们将迹的结果打印出来。
注意numpy.trace()函数只能用于二维矩阵如果要计算高维矩阵的迹可以先使用numpy.diagonal()函数提取对角线上的元素然后再求和。
高维数组变为向量
在NumPy中可以使用numpy.ravel()函数将多维数组转换为一维向量。这个函数会将数组展平成一个连续的一维数组并按照行优先的顺序进行展平。
以下是使用numpy.ravel()函数将高维数组变为向量的示例代码
import numpy as np# 创建一个高维数组
arr np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 将高维数组展平成向量
vector np.ravel(arr)print(向量:, vector)输出结果
向量: [1 2 3 4 5 6 7 8 9]在这个示例中我们创建了一个3x3的高维数组arr然后使用np.ravel()函数将其展平为一维向量vector。最后我们将向量打印出来。
除了np.ravel()函数还可以使用np.flatten()函数实现类似的功能两者的区别在于np.ravel()函数返回的是数组的视图view而np.flatten()函数返回的是数组的副本copy。如果不关心返回的是视图还是副本可以使用np.ravel()函数更高效。
在NumPy中除了使用numpy.ravel()函数将多维数组展平为一维向量之外还可以使用numpy.flatten()方法实现相同的功能。这两个方法在展平数组方面是等效的但它们有一个重要的区别
numpy.ravel(): 返回一个展平的数组视图view如果对返回的视图进行修改原始数组也会被修改。numpy.flatten(): 返回一个展平的数组副本copy对返回的副本进行修改不会影响原始数组。
以下是使用numpy.flatten()方法将高维数组展平为向量的示例代码
import numpy as np# 创建一个高维数组
arr np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 将高维数组展平成向量
vector arr.flatten()print(向量:, vector)输出结果
向量: [1 2 3 4 5 6 7 8 9]在这个示例中我们使用arr.flatten()方法将高维数组arr展平为一维向量vector并将结果打印出来。
需要注意的是无论是numpy.ravel()函数还是numpy.flatten()方法都会将多维数组展平为一维向量但返回的是视图或副本的区别可能会对内存管理和性能产生一定的影响。因此在选择使用哪种方法时可以根据具体的需求和性能要求来进行选择。
增加或删除维度的实现方法
在NumPy中可以使用以下方法来增加或删除数组的维度 增加维度 使用numpy.newaxis或None关键字可以在指定位置使用np.newaxis或None关键字来增加新的维度。例如可以通过arr[:, np.newaxis]在二维数组的列维度之间增加一个新维度。 import numpy as np# 创建一个一维数组
arr np.array([1, 2, 3])# 增加新维度
new_arr arr[:, np.newaxis]print(新数组的形状:, new_arr.shape)输出结果 新数组的形状: (3, 1)在这个示例中我们使用arr[:, np.newaxis]将一维数组arr在列维度之间增加了一个新维度得到了形状为(3, 1)的新数组new_arr。 使用numpy.expand_dims()函数该函数可以在指定位置上增加新的维度。第一个参数是输入数组第二个参数axis是要插入新维度的位置。 import numpy as np# 创建一个一维数组
arr np.array([1, 2, 3])# 增加新维度
new_arr np.expand_dims(arr, axis1)print(新数组的形状:, new_arr.shape)输出结果 新数组的形状: (3, 1)在这个示例中我们使用np.expand_dims(arr, axis1)将一维数组arr在列维度之间增加了一个新维度得到了形状为(3, 1)的新数组new_arr。 删除维度 使用numpy.squeeze()函数该函数可以删除长度为1的维度。默认情况下它将删除所有长度为1的维度但也可以通过指定axis参数来仅删除特定位置的长度为1的维度。 import numpy as np# 创建一个三维数组
arr np.array([[[1], [2], [3]]])# 删除维度
new_arr np.squeeze(arr)print(新数组的形状:, new_arr.shape)输出结果 新数组的形状: (3,)在这个示例中我们使用np.squeeze(arr)删除了长度为1的维度将原本形状为(1, 3, 1)的三维数组arr转换为形状为(3,)的新数组new_arr。
需要注意的是增加或删除维度时可以根据具体需求选择合适的方法。numpy.newaxis和None关键字的使用比较灵活而numpy.expand_dims()和numpy.squeeze()函数更具有可读性