数据分析(1)

数据分析

1.numpy

1.1 数组

1.1.1 创建数组

# newlist = [1,2,3]
# print('列表',newlist)
# print(type(newlist))
# arr1 = numpy.array(newlist)
# print('数组',arr1)
# print(type(arr1))

1.1.2 数组的组成

1.1.2.1 维度的个数
print('维度的个数',arr1.ndim)
1.1.2.2 维度的大小
print('维度的大小',arr1.shape)
1.1.2.3 数据类型
print('数据类型',arr1.dtype)

1.1.3 数组的随机抽样创建

arr1 = numpy.random.rand(3,4)
注意:
rand如果不指定任何参数,返回的是一个浮点数(小数),指定参数之后,其实指定的就是数组的大小

arr1 = numpy.random.uniform(size=3)
arr2 = numpy.random.uniform(size=(3,4))
arr3 = numpy.random.uniform(5,10,size=(3,4))
注意:
uniform如果不指定参数,默认的数据区间为0-1,返回的是一个浮点数

arr1 = numpy.random.randint(-1,20,(4,4))
注意:
randint返回的是整数,可以指定负数范围

1.1.4 数组的序列创建

arr1 = numpy.array()

numpy.zeros
全为0的数组

numpy.ones
全为1的数组

numpy.arange
创建的是一维数组

arr1.reshape()
对原有数组进行重组,将一维数组转变为多维数组,但是数据的数量要对应

1.2 索引与切片

1.2.1 一维数组

arr1 = np.arange(10)
arr1[0]
arr1[0:2]
#一维数组与列表类似,数组[起始位置:结束位置:步长]

1.2.2 多维数组

arr2 = np.arange(12).reshape(3,4)
arr2[0][2]
arr2[0,2]
#数组中间以逗号为分隔,数组[行索引,列索引]

1.2.3 取连续多列

arr2[:,1:3]

array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]])

1.2.4 取连续多行

arr2[0:2]

array([[0, 1, 2, 3],
       [4, 5, 6, 7]])

1.2.5 取不连续多行

#取1,3行
arr2[[0,2],:]

array([[ 0,  1,  2,  3],
       [ 8,  9, 10, 11]])

1.2.6 取不连续多列

#取1,3,4
arr2[:,[0,2,3]]

array([[ 0,  2,  3],
       [ 4,  6,  7],
       [ 8, 10, 11]])

1.2.7 条件筛选

#条件筛选
arr2>5
array([[False, False, False, False],
       [False, False,  True,  True],
       [ True,  True,  True,  True]])


arr2[arr2>5]
array([ 6,  7,  8,  9, 10, 11])

#取出当前数组中所有大于5的偶数
arr2>5
array([[False, False, False, False],
       [False, False,  True,  True],
       [ True,  True,  True,  True]])

arr2%2==0
array([[ True, False,  True, False],
       [ True, False,  True, False],
       [ True, False,  True, False]])
       
arr2[(arr2>5) & (arr2%2==0)]
array([ 6,  8, 10])

1.3 元素计算函数

1.3.1 一元运算符

np.ceil() 参数可以是数组也可以是数字,向上取整

np.floor() 参数可以是数组也可以是数字,向下取整

np.rint() 四舍五入

np.abs 绝对值

np.square 平方

np.modf 将整数部分和整数部分分离作为单独的数组返回,返回形式是元组

np.isnan 判断是否有空值

1.3.2 二元运算符

add 数组相加,元素可以是数字或者数组,但是数组在相加的过程中,注意必须对应

subtract 数组相减,元素可以是数字或者数组,但是数组在相加的过程中,注意必须对应

multiply 元素相乘

divide 元素相除

floor_divide 元素相除取整数商,抛去余数

mod 取余

power 元素求次方

1.3.3 三元运算符

# where(条件,返回值1,返回值2)  如果满足条件,返回返回值1,否则返回返回值2 

#创建浮点型数组,找到四舍五入后大于20或者小于15的数字,满足则返回0,否则返回正常值
arr5 = np.random.uniform(10,25,size=(3,4))

arr5
array([[20.49391706, 22.51440077, 18.00017271, 12.60778079],
       [22.16917256, 22.04108387, 21.60469827, 17.1202335 ],
       [19.68909432, 24.12315481, 15.2338755 , 20.79586799]])

np.where((np.rint(arr5)>20)|(np.rint(arr5)<15),0,arr5)
array([[20.49391706,  0.        , 18.00017271,  0.        ],
       [ 0.        ,  0.        ,  0.        , 17.1202335 ],
       [19.68909432,  0.        , 15.2338755 ,  0.        ]])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值