文章目录
- 前言
- 知识点1:np.maximum
- 知识点2:ndarray数据类型
- 知识点3:数据运算
- 知识点4:数组和标量间的运算
- 知识点5:数组的索引和切片
- 知识点6:数组的转置和轴对称
- 知识点7:检索数组元素
前言
在机器学习中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本人工智能书籍),实时更新深度学习相关知识!