版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章数据分析Numpy类库练习题一、选择题(每题只有一个正确答案)以下关于NumPy多维数组(ndarray)的描述,正确的是()。
A.ndarray中的数据类型可以不一致
B.ndarray的数据存储在连续的内存空间中
C.ndarray的每个成员可以是任意Python对象
D.ndarray的维度(ndim)属性返回的是数组中元素的总个数答案:B以下哪个函数可以生成一个形状为(3,4)的随机数组,元素服从标准正态分布?()
A.np.random.rand(3,4)
B.np.random.randn(3,4)
C.np.random.randint(0,10,size=(3,4))
D.np.random.uniform(0,1,(3,4))答案:B对于形状为(2,3,4)的三维数组,其shape属性返回的结果是()。
A.2
B.(2,3,4)
C.24
D.(2,3,4,1)答案:B以下代码的运行结果是()。pythonimportnumpyasnpa=np.array([1,2,3,4])b=a.reshape(2,2)b[0,0]=99print(a)A.[1234]
B.[99234]
C.[[992][34]]
D.报错答案:B
(reshape返回的是视图,修改b会影响原数组a)关于NumPy的广播机制,以下说法正确的是()。
A.广播只能在形状完全相同的数组之间进行
B.广播时,维度小的数组会在左侧补1,然后从后向前对齐
C.广播时,对应维度长度必须相等或其中一个为1
D.广播会改变原数组的数据答案:C以下哪个函数用于查找数组中满足条件的元素索引?()
A.np.where()
B.np.argmax()
C.np.searchsorted()
D.np.extract()答案:A对于二维数组a,以下哪个操作可以获得a的第一列?()
A.a[0,:]
B.a[:,0]
C.a[0,0]
D.a[:,0:1]答案:B以下关于np.random.RandomState的说明,正确的是()。
A.它是全局随机数生成器
B.它用于生成一个局部随机数生成器,可以独立控制种子
C.它不能设置种子
D.它生成的随机数与np.random.seed无关答案:B以下代码的输出结果是()。pythonimportnumpyasnpa=np.array([1,2,3,4])b=np.array([10,20,30,40])print(np.dot(a,b))A.[104090160]
B.300
C.100
D.[123410203040]答案:B
(点积:1×10+2×20+3×30+4×40=300)以下哪个函数可以将多维数组展平为一维,并返回原数组的视图?()
A.flatten()
B.ravel()
C.reshape(-1)
D.reshape(1,-1)答案:B
(ravel返回视图,flatten返回副本)二、判断题(正确打“√”,错误打“×”)NumPy数组的dtype属性决定了数组中元素的类型,且所有元素类型必须相同。(√)np.arange(0,10,0.5)可以生成从0到9.5步长为0.5的浮点数数组。(√)对于二维数组,使用单个整数索引如a[2]会返回该行的数据,其维度比原数组少一维。(√)使用花式索引(整数数组索引)返回的数组是原数组的一个视图。(×)解析:花式索引返回的是原数组的副本,不是视图。两个形状不同的数组进行算术运算时,如果满足广播条件,NumPy会自动复制数据使形状一致。(√)np.eye(3)函数可以生成一个3×3的单位矩阵。(√)np.sqrt()是通用函数,可以对数组中的每个元素计算平方根。(√)使用np.loadtxt()读取文件时,默认会将数据转换为整数类型。(×)解析:默认转换为float类型。np.random.shuffle()可以随机打乱多维数组所有维度的顺序。(×)解析:shuffle只改变第一维的顺序,子维内容不变。数组的切片操作返回的是原数组的视图,因此对切片的修改会影响原数组。(√)三、简答题简述NumPy多维数组(ndarray)的主要属性及其含义。参考答案:ndarray的主要属性包括:(1)ndim:数组的维度(轴)个数;(2)shape:数组的维度,由各维度上数组大小构成的元组;(3)size:数组中总的成员个数,等于shape中各维度大小的乘积;(4)dtype:数组成员类型描述对象;(5)itemsize:每个成员占用的字节大小;(6)data:数组数据存储区的缓冲区对象。如何创建NumPy数组?请列举至少五种方法。参考答案:(1)从Python列表或元组转换:np.array([1,2,3]);(2)使用np.arange(start,stop,step)生成一维数组;(3)使用np.linspace(start,stop,num)生成等间隔数组;(4)使用np.zeros(shape)、np.ones(shape)、np.eye(N)生成特殊数组;(5)使用np.random模块中的函数生成随机数组,如np.random.randn()、np.random.randint()等。什么是数组的广播机制?广播的条件是什么?参考答案:广播是指当两个形状不同的数组进行运算时,NumPy通过复制数据使形状一致,从而进行逐元素运算的机制。广播的条件是:(1)从后向前对齐维度,缺失维度补1;(2)对应维度要么相等,要么其中一个为1。满足条件时,维度为1的轴会被复制扩展以匹配另一个数组。NumPy中flatten()和ravel()方法有什么区别?参考答案:两者都将多维数组转换为一维数组。区别在于:ravel()返回的是原数组的视图(view),修改返回的数组会影响原数组;flatten()返回的是原数组的副本(copy),修改返回的数组不影响原数组。在性能上,ravel()通常更快且占用内存更少。如何对多维数组进行切片操作?请举例说明。参考答案:多维数组的切片使用逗号分隔每个维度的切片表达式,格式为[start:stop:step,...]。例如,对于三维数组arr,arr[1:3,:,::2]表示取第1维索引1到2的行,第2维全部,第3维步长为2。省略的维度表示全部选取,连续省略可以用...代替。切片返回的是原数组的视图。什么是花式索引?它与切片索引有何不同?参考答案:花式索引是指使用整数数组作为索引来选择数组中特定位置的元素。例如,arr[[0,2,3],[1,0,2]]会选择(0,1)、(2,0)、(3,2)位置的元素。与切片不同,花式索引返回的是原数组的副本,且可以按任意顺序选取不连续的位置。简述NumPy通用函数(ufunc)的特点,并举例说明其应用。参考答案:通用函数是对ndarray进行逐元素操作的函数,具有向量化运算、速度快、代码简洁的特点。它们分为一元函数(如np.sqrt、np.exp、np.sin)和二元函数(如np.add、np.maximum)。使用通用函数可以避免显式循环,提高计算效率。如何使用NumPy生成符合正态分布的随机数?请写出代码。参考答案:可以使用np.random.normal(loc,scale,size)生成指定均值和标准差的正态分布随机数。例如,生成100个均值为0、标准差为1的随机数:np.random.normal(0,1,100)。也可以使用np.random.randn(size)生成标准正态分布随机数。解释NumPy数组的shape属性与reshape方法的关系。参考答案:shape属性是数组的一个属性,表示数组各维度的大小,可以读取或直接修改(只要元素总数不变)。reshape()是数组的方法,返回一个具有新形状的数组视图(如果可能),不改变原数组的数据。两者都要求新形状的元素总数与原数组相同。如何使用NumPy进行矩阵乘法?请写出两种方法。参考答案:对于二维数组表示的矩阵,可以使用以下方法进行矩阵乘法:(1)np.dot(A,B)或A.dot(B);(2)使用@运算符:A@B;(3)对于高维数组,可以使用np.matmul(A,B)。注意,点积要求第一个矩阵的列数等于第二个矩阵的行数。第八章数据分析Pandas类库练习题一、选择题(每题只有一个正确答案)以下关于Pandas中Series和DataFrame的描述,正确的是()。
A.Series是一维数据结构,DataFrame是二维数据结构
B.Series和DataFrame都是可变数据类型
C.DataFrame的每一列是一个独立的Series,且列索引可以重复
D.Series只有行索引,没有列索引答案:A以下哪个方法可以查看DataFrame的统计汇总信息(包括计数、均值、标准差等)?()
A.
()
B.df.head()
C.df.describe()
D.df.shape答案:C在Pandas中,使用df.loc['index1':'index3']进行切片时,结果包含()。
A.只包含index1
B.包含index1和index3,但不包含中间的行
C.包含index1到index3的所有行,区间左闭右闭
D.包含index1到index3的所有行,区间左闭右开答案:C
(标签索引切片包含两端)以下哪个函数用于处理缺失值,可以用指定的值填充缺失值?()
A.df.dropna()
B.df.isnull()
C.df.fillna()
D.df.drop_duplicates()答案:C关于Pandas的groupby操作,以下说法正确的是()。
A.groupby返回的是一个DataFrame对象
B.groupby返回的是一个GroupBy对象,需要配合聚合函数使用
C.groupby只能按照单列分组
D.groupby操作不能与agg方法配合使用答案:B以下代码的输出结果是()。pythonimportpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])print(s.iloc[2])A.3
B.'c'
C.2
D.报错答案:A
(iloc使用位置索引,位置2对应第三个元素,值为3)以下哪个方法用于将多个DataFrame按行方向(垂直)合并?()
A.pd.merge()
B.df.join()
C.pd.concat(axis=0)
D.pd.concat(axis=1)答案:C关于时间序列的重采样(resample),以下说法正确的是()。
A.重采样只能从高频率降到低频率
B.重采样只能从低频率升到高频率
C.降采样时需要指定聚合函数
D.升采样时缺失值无法填充答案:C以下哪个方法用于删除DataFrame中包含缺失值的行?()
A.df.fillna()
B.df.dropna()
C.df.isna()
D.df.drop_duplicates()答案:B关于Pandas的透视表函数pivot_table,以下说法正确的是()。
A.pivot_table只能使用均值作为聚合函数
B.pivot_table不能处理重复的索引值
C.pivot_table可以指定行索引、列索引和聚合列
D.pivot_table返回的是DataFrame,不能设置缺失值填充答案:C二、判断题(正确打“√”,错误打“×”)Pandas的DataFrame可以看作是一个有序的字典,键是列索引,值是Series。(√)使用df.iloc[0:3]切片时,包含索引为0、1、2的行,不包含索引为3的行。(√)df.fillna(method='ffill')可以使用缺失值后面的值向前填充缺失值。(×)解析:method='ffill'或'pad'是向前填充(用前一个值填充),'bfill'或'backfill'是向后填充。groupby操作后使用agg()方法可以同时应用多个聚合函数。(√)pd.merge()只能按照行索引进行合并,不能按照列进行合并。(×)解析:pd.merge()可以指定on、left_on、right_on等参数按照列进行合并。DataFrame的apply()方法可以对每一行或每一列应用一个函数。(√)reset_index()方法会将原索引重置为默认的整数索引,并将原索引作为新的一列保留。(√)时间序列的resample方法进行升采样时,必须指定聚合函数。(×)解析:升采样时,通常需要填充缺失值,但不一定需要聚合函数(聚合函数用于降采样)。df.groupby('列名').transform()返回的结果与原始数据形状相同。(√)DataFrame的plot()方法可以绘制折线图、条形图、直方图等多种图形。(√)三、简答题简述Pandas中Series和DataFrame的区别与联系。参考答案:Series是一维带标签的数组,可以看作是一个有序的字典,每个数据对应一个行索引。DataFrame是二维带标签的数据结构,可以看作是由多个具有相同行索引的Series组成的表格,既有行索引也有列索引。DataFrame的每一列都是一个Series,因此DataFrame可以看作是一个值为Series的字典,键是列索引。Series和DataFrame都支持标签索引和位置索引。DataFrame中loc和iloc有什么区别?请举例说明。参考答案:loc是基于标签的索引,使用行标签和列标签进行选择;iloc是基于位置的整数索引,使用行号和列号进行选择。例如,df.loc['index1':'index3','col1':'col2']使用标签切片(包含两端),df.iloc[0:3,1:3]使用位置切片(左闭右开)。loc和iloc都支持单个标签、标签列表、切片和布尔数组索引。Pandas中如何处理缺失值?请列举常用的方法。参考答案:常用的缺失值处理方法包括:(1)检查缺失值:df.isnull()、df.isna()返回布尔数组,df.isnull().sum()统计每列缺失值个数;(2)删除缺失值:df.dropna()删除包含缺失值的行或列,可通过axis、how、thresh等参数控制;(3)填充缺失值:df.fillna(value)用指定值填充,可设置method参数进行向前或向后填充,也可用均值、中位数等统计量填充。groupby操作的基本流程是什么?agg()、transform()和apply()方法有什么区别?参考答案:groupby操作分为三个阶段:分组(split)、应用(apply)和合并(combine)。区别如下:(1)agg():对每组应用聚合函数,返回聚合结果,每组输出一行;(2)transform():对每组应用函数,返回与原始数据相同形状的结果,保留原索引;(3)apply():最灵活,可以对每组应用任意函数,返回结果的形状由函数决定,可以返回标量、Series或DataFrame。简述pd.merge()和pd.concat()的区别。参考答案:pd.merge()用于基于一个或多个键(列)进行数据库风格的连接,类似于SQL的JOIN操作,可以指定连接方式(inner、left、right、outer),主要用于列对齐的连接。pd.concat()用于沿一个轴(行或列)进行简单的拼接,不依赖于键值匹配,主要用于按行堆叠或按列合并,当需要基于键值匹配的复杂连接时使用merge,当需要简单拼接时使用concat。时间序列分析中,resample方法的作用是什么?请举例说明。参考答案:resample方法用于时间序列的频率转换和重采样。降采样(从高频率到低频率)时,需要指定聚合函数,如df.resample('M').mean()计算月度均值。升采样(从低频率到高频率)时,需要处理缺失值,可使用fillna或method参数填充。resample常用于将日数据聚合为周、月、季度数据,或将低频数据插值为高频数据。DataFrame中apply()和applymap()方法有什么区别?参考答案:apply()方法作用于DataFrame的行或列,可以接受一个函数,该函数接收一维数组(Series)作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 路基土石方爆破施工设计方案
- 市政道路沥青面层施工组织方案
- 《独一无二的我》自信心成长教育+课件+心理、主题班会
- 科技报告管理体系与写作技巧深度分析报告
- 电梯安装安全方案
- 网络安全漏洞扫描策略解析
- 劳动合同模板
- 新华人寿祥福中老年综合意外伤害保险利益条款
- 传媒行业月度点评:大模型密集更新AI视频驱动内容生产变革
- 浅析企业财务预算管理中的主要问题及对策
- 《儿童病毒性脑炎》教学课件
- 大学生就业心理调适与应对
- 塔吊覆盖区域安全防护施工方案
- 侨法知识讲座
- 人教版小学六年级下册音乐教案全册
- 光子时代:光子产业发展白皮书 202311-部分1
- 混合IC测试技术-第二章-DC参数测试
- 商务英语词汇
- 高效音频放大器设计毕业论文
- 实验诊断学第八章 心脑血管疾病实验诊断
- 幼儿园安全教育管理PPT(37P)
评论
0/150
提交评论