Python之numpy常用知识点总结

前言

  在机器学习中numpy库是一个常用的库,接下来介绍一下numpy常用的知识点绝对会帮到你的,不信你往下看;
在这里插入图片描述
看完这篇还有两篇学不完的知识,加油哦!

目标检测1–Pytorch目标检测之yolov1
目标检测2–yolov1中相关基础知识(边框回归、交并比、nms)介绍

知识点1:np.maximum

  np.maximum 是 NumPy 库中的一个函数,用于逐元素比较两个数组,并返回元素间最大值组成的数组;

a = np.array([1, 2, 3, 4])  
b = np.array([4, 3, 2, 1])  
  
result = np.maximum(a, b)  
print(result)  # 输出: [4 3 3 4]

  np.maximum中如果两个数组的大小不同,则较小的数组会被广播(broadcast)以匹配较大数组的形状。

a = np.array([[1, 2], [3, 4]])  
b = np.array([2, 3])  
  
result = np.maximum(a, b)  
print(result)  # 输出: [[2 3] [3 4]]

知识点2:ndarray数据类型

  查看ndarray的数据类型:

data = np.array([[1,2,3],[4,5,6]])

print(data.dtype.name)  # 输出int32

  转换ndarray的数据类型并查看:

data_convert = data.astype("float32")

print(data_convert.dtype.name)   # 输出float32

知识点3:数据运算

  多维数组间的加减乘除运算:

a = np.array([[1, 2], [3, 4]])  
b = np.array([[3, 2], [4, 4]])  
print(a+b)   #输出:[[4, 4], [7, 8]]
print(a-b)   #输出:[[-2, 0], [-1, 0]]
print(a*b)   #输出:[[3, 4], [12, 16]]
print(a/b)   #输出:[[0.3333, 1], [0.75, 1]]

知识点4:数组和标量间的运算

  多维数组与标量间的加减乘除运算:

a = np.array([[1, 2], [3, 4]])  
c = 3 
print(a+c)   #输出:[[3, 5], [6, 7]]
print(a-c)   #输出:[[-2, -1], [0, 1]]
print(a*c)   #输出:[[3, 6], [9, 12]]
print(a/c)   #输出:[[0.3333, 0.6666], [1, 1.3333]]

知识点5:数组的索引和切片

arr = np.arange(8)   #创建一个连续的步长为1的一维数组
print(arr)  #输出:[0 1 2 3 4 5 6 7]

arr2 = np.arange(8, 20, 2)   #创建一个首值为8终值为20步长为2的一维数组
print(arr2)  #输出:[ 8 10 12 14 16 18]

result1 = arr[5]  #获取索引为5的元素
print(result1)  #输出:5

result2 = arr[5:7]  #获取索引为5到7的元素(不包括7)
print(result2)  #输出:[5 6]

result3 = arr[1:5:2]  #获取索引为1到5的步长为2元素(不包括5)
print(result3)  #输出:[1 3]

知识点6:数组的转置和轴对称

  二维数组求转置:

arr3 = np.arange(12).reshape(3, 4)
print(arr3)     #输出:[[ 0  1  2  3],[ 4  5  6  7],[ 8  9 10 11]]  
arr3_T = arr3.T  
print(arr3_T)     #输出:[[ 0  4  8],[ 1  5  9],[ 2  6 10],[ 3  7 11]]  

  三维数组求转置函数np.transpose:

arr4 = np.arange(16).reshape(2, 2, 4)
print(arr4)     #输出:[[[ 0  1  2  3],[ 4  5  6  7]], [[ 8  9 10 11],[12 13 14 15]]]  (2个2行4列的数组)

# 三维数组的转置函数transpose
# 默认情况下,三维数组的轴顺序是 (0, 1, 2),其中 0 是最外层的维度  
# 通过指定 axes=(1, 0, 2),我们可以将第一个和第二个轴互换
arr4_T = arr4.transpose(2, 1, 0)
print(arr4_T)   #结果[[[ 0  8],[ 4 12]],[[ 1  9],[ 5 13]],[[ 2 10],[ 6 14]],[[ 3 11],[ 7 15]]]

  三维数组交换轴函数swapaxes:

numpy.swapaxes(a, axis1, axis2)
  • a:要交换轴的数组。
  • axis1:要交换的第一个轴的索引。
  • axis2:要交换的第二个轴的索引。

  这个函数会返回一个新的数组,其中 axis1 和 axis2 指定的轴被交换了位置,而数组的其他轴保持不变。

例如,考虑一个三维数组(形状为 (i, j, k)),你可以使用 np.swapaxes 来交换第一个和第二个轴,或者第二个和第三个轴,等等。

import numpy as np  
  
# 创建一个三维数组  
arr_3d = np.arange(24).reshape(2, 3, 4)  
  
# 交换第一个和第二个轴  
swapped_arr_1 = np.swapaxes(arr_3d, 0, 1)  
print(swapped_arr_1.shape)  # 输出: (3, 2, 4)  
  
# 交换第二个和第三个轴  
swapped_arr_2 = np.swapaxes(arr_3d, 1, 2)  
print(swapped_arr_2.shape)  # 输出: (2, 4, 3)  
  
# 注意:如果你尝试交换不存在的轴,比如对于上面的数组尝试交换第4个轴,将会引发 ValueError  
# np.swapaxes(arr_3d, 0, 3)  # 这会抛出 ValueError

知识点7:检索数组元素

arr6 = np.array([[1, 2], [3, 4]]) 
flag1 = np.any(arr6 < 0)
print(flag1)        #结果False (arr6所有元素是否有一个小于0)
flag2 = np.any(arr6 > 0)
print(flag2)        #结果True (arr6所有元素是否都大于0)

如有错误欢迎指正,如果帮到您请点赞加收藏哦!

以上程序可以关注我的微信公众号:回复“numpy常用知识点总结”领取;另外回复"深度学习资料"领取深度学习相关资料(100本人工智能书籍),实时更新深度学习相关知识!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xp_fangfei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值