数据采集与处理-复习思考题与答案-3-Numpy与Pandas基础_第1页
数据采集与处理-复习思考题与答案-3-Numpy与Pandas基础_第2页
数据采集与处理-复习思考题与答案-3-Numpy与Pandas基础_第3页
数据采集与处理-复习思考题与答案-3-Numpy与Pandas基础_第4页
数据采集与处理-复习思考题与答案-3-Numpy与Pandas基础_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据采集与处理:基于Python》复习思考题、习题与答案第三章Numpy与Pandas基础1、计算numpy中元素个数的方法是?A、np.sqrt()B、np.size()C、np.identityD、np.len()答案:B2、已知c=np.arange(16).reshape(2,4,2)那么c.sum(axis=0)所得的结果为?A、array([[12,16],[44,48],[76,80]])B、array([[1,5,9,13],[17,21,25,29],[33,37,41,45]])C、array([[24,27],[30,33],[36,39],[42,45]])D、array([[8,10],[12,14],[16,18],[20,22]])答案:D

解析:构造数组为2个4*2数组,axis=0即求和是在第0维前后两页array上对应元素求和,得到4*2的数组3、有数组n=np.arange(24).reshape(2,-1,2,2),n.shape的返回结果是什么?A、(2,3,2,2)B、(2,2,2,2)C、(2,4,2,2)D、(2,6,2,2)答案:A4、numpy中创建全为0的矩阵使用函数为?A、zeros.B、ones.C、empty.D、arange.答案:A5、numpy中向量转成矩阵使用函数为?A、randomB、revalC、reshapeD、arange答案:C

解析:考察numpy函数功能6、在使用numpy时需要如何导入?A、不用导入,直接使用B、importnumpyasnpC、importsysD、importpandas答案:B

解析:考察numpy模块名称与导入方法7、importnumpyasnp;t1=np.arange(16).reshape((4,4)),如何将t1数组进行行列转置?A、t1.TB、t1.transpose()C、t1.swapaxes(0,1)D、以上都对答案:D

解析:numpy多维数组的多种转置方法8、对numpy生成的数组中,随机选择部分样本,使用哪个函数?A、sample()B、select()C、choice()D、shuffle()答案:C

解析:choice(a[,size,replace,p]):从一维数组a中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认为False9、下列numpy中哪个函数可以生成符合标准正态分布的数组?A、random.rand()B、random.randint()C、random.random()D、random.randn()答案:D

解析:考察numpy随机数生成函数及区别10、importnumpyasnp;arr=np.arange(10).reshape((5,2))[:,0:-1:2],arr的值是?A、[[1],[2],[3],[4],[5]]B、[[5],[6],[7],[8],[9]]C、[[0],[2],[4],[6],[8]]D、所列结果都不对答案:C

解析:考察numpy数组重塑与切片操作11、使用numpy创建一个大小为10的零向量数组,函数形式为____。答案:zeros(10);np.zeros(10)12、使用numpy创建一个数组,使它的值为10到49,函数形式为____。答案:arange(10,50);arange(10,50,1);np.arange(10,50);

np.arange(10,50,1)13、5x3矩阵乘3x2矩阵,对应结果的形状是____。答案:(5,2);5x214、arr=np.arange(10),写出获取数组arr第3至第8个元素(注意3和8不是索引下标)的切片语句____。答案:arr[2:8]15、numpy中根据起止数据等间距地生成数组的函数是____。答案:linspace();np.linspace()16、numpy中能够一次完成多个数组拼接的函数是____。答案:concatenate();np.concatenate()17、numpy生成的数组中,其元素数据类型____(必须相同/可以不同)。答案:必须相同18、TT=np.arange(4)-2,变量TT的值为____。答案:[-2-101];array([-2,-1,0,1]);[-2,-1,0,1];[-2,-1,0,1][-2-101];array([-2,-1,

0,

1]);[-2,-1,

0,

1];[-2,-1,0,1]19、TT=np.arange(4).mean(),变量TT的值为____。答案:1.520、numpy中读取CSV文件的函数是____。答案:loadtxt();np.loadtxt()21、使用np.random.random创建一个10*10对象,并打印出其最大、最新元素和均值。

{答案:importnumpyasnp

a=np.random.random((10,10))

print(a.max(),a.min(),a.mean())

}22、使用numpy生成3行4列的数值为0至11之间整数的2维数组,然后使矩阵每行的数据减去该行的均值,并保持原来形状,输出结果。试写出完整Python代码。

{答案:importnumpyasnp

X=np.arange(12).reshape((3,4))

print("X=",X)

Y=X-X.mean(axis=1,keepdims=True)

print("Y=",Y)

}

解析:numpy.mean(a,axis,dtype,out,keepdims),axis=1:压缩列,对各行求均值;keepdims=True表示维度缩减的轴在运算之后仍被保留23、创建一个长度为10的一维全为0的ndarray对象,第五个元素为1,并打印,写出完整Python代码.

{答案:importnumpyasnp

a=np.zeros((10,))

a[4]=1

print(a)

}24、给定数组[1,2,3,4,5],如何得到在这个数组的每个元素之间插入3个0后的新数组?试使用numpy模块写出完整Python代码.

{答案:importnumpyasnp

nd1=np.arange(1,6)

nd2=np.zeros(shape=17,dtype=int)

nd2[::4]=nd1

}25、创建一个5*3随机矩阵和一个3*2的元素值为0~100之间随机整数的矩阵,求矩阵积,打印结果。试用numpy模块实现并写出完整Python代码.

{答案:importnumpyasnp

n1=np.random.randint(0,100,size=(5,3))

n2=np.random.randint(0,100,size=(3,2))

result=np.dot(n1,n2)

print("结果为",result)

}26、通过Numpy创建的数组与列表相比,有何异同?数据类型限制、存储效率、运算效率、矩阵运算、算术运算区别如乘法?答案:Numpy创建的数组,其元素数据类型都是相同的,而列表则可以不同,这导致列表的存储效率和运算效率都较低。Numpy数组支持矩阵运算,而列表不支持;在算术运算上也有区别,对于乘法运算,列表是对元素进行复制,而Numpy数组则是针对其上的每个元素进行乘法算术运算27、Numpy创建数组的函数arange()、linspace()、logspace()各有什么作用?答案:arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值logspace函数和linspace类似,不过它创建等比数列,起始位和终止位代表的是10的幂(默认基数为10),如果想要改变基数,则需要修改其默认基数,输入有第四个参数base,改变其值即可。28、Numpy存取元素的方法都有哪些?存取后的变量与原始数组是否共享数据空间,分不同情况么?答案:Numpy存取元素的方法有多种,如:1)用整数作为下标可以获取数组中的某个元素;2)用范围作为下标获取数组的一个切片,符号使用“:”,形式为[起点:终点:步长],下标可以使用负数,表示从数组后往前数,缺省范围为左闭右开。通过下标范围获取的新的数组是原始数组的一个视图,即与原始数组共享同一块数据空间;3)使用整数序列。当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间;4)使用布尔数组。当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组,不能使用布尔列表29、Numpy的any()和all()方法有何作用和区别?答案:数组的any()或all()方法。只要数组中有一个值为True,则any()返回True;而只有数组的全部元素都为True,all()才返回True30、Numpy的两个数组的shape不同的话,如何进行算术运算?答案:使用ufunc函数对两个数组进行计算时,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同)。如果两个数组的shape不同的话,会进行如下的广播(broadcasting)处理:1.让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。2.输出数组的shape是输入数组shape的各个轴上的最大值。3.如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。4.当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。31、Numpy数组的拼接方法都有哪些?简单介绍答案:Python中numpy数组的合并有很多方法,如:1)np.append()。用于合并两个数组。该函数返回一个新数组,原始数组保持不变.函数语法为:numpy.append(arr,values,axis=None).axis:该轴指定沿其附加值的轴。如果未提供轴,则将两个阵列展平;values:值是类似数组的对象,并附加到“arr”元素的末尾2)np.concatenate()。参数为要连接的数组对象和指定连接的轴axis。axis=1进行水平组合,axis=0进行垂直组合3)np.stack()。把数组给堆叠起来,函数原型为:stack(arrays,axis=0),arrays可以传数组和列表。axis=1进行水平组合,即水平(按列顺序)将数组进行堆叠;axis=0进行垂直组合4)np.hstack()。参数为要连接的数组对象,进行水平组合5)np.vstack()。参数为要连接的数组对象,进行垂直组合6)np.dstack()。深度组合:沿着纵轴方向组合其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题32、Pandas中DataFrame对象调用描述性统计方法describe,对数值型的列数据会输出哪些统计结果,而对类别或文本型的列数据又会输出哪些统计结果答案:数值型数据列的描述性统计,会输出针对数据的统计信息,如均值、标准差、中值、最小值、最大值及四分位统计值等;而类别或文本型列数据的描述性统计,其结果包括count(计数)、unique(唯一值个数)、top(出现频率最高的值)、freq(频率最高值的频度)等。33、简述pandas数据对象Series和DataFrame的算数运算的对齐机制答案:pandas可以对不同索引的对象进行算术运算,如果存在不同的索引对,结果的索引就是该索引对的并集。sereis相加会自动进行数据对齐操作,在不重叠的索引处会使用NA(NaN)值进行填充,series进行算术运算的时候,不需要保证series的大小一致。dataFrame相加时,对齐操作需要行和列的索引都重叠的时候才会相加,否则会使用NA值进行填充。使用add方法对两个series进行相加的时候,设置fill_value的值是对于不存在索引的series用指定值进行填充后再进行相加。除了加法add,还有sub减法,div除法,mul乘法,使用方式与add相同。DataFrame与series一样。34、简述Pandas中的两类数据结构Series和DataFrame的特点与作用?答案:Series是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴标一般指索引。DataFrame是二维标记数据结构,列可以是不同的数据类型。它是最常用的pandas对象,像Series一样可以接收多种输入:lists、dicts、series和DataFrame等。初始化对象时,除了数据还可以传index和columns这两个参数。Series兼具Numpy数组的特点,运算效率高,支持对元素的成批量运算,但相比Numpy数组,还支持自动对齐的计算,并提供了多种函数支持数据的读入、处理、分析等功能;特别是DataFrame,支持多种数据源的读入,特别是对关系数据库的访问和数据处理,非常高效。35、简述Pandas中DataFrame与Numpy中二维数组的检索方法的异同答案:对于DataFrame对象,其只有直接的df[][]索引和ndarray不一样,此时DataFrame先索引的是列,而不是行,也没有df[i,j]的索引方法,但是对于切片索引以及df.iloc的索引方法,和ndarray完全一样;此外,DataFrame还有df.loc的标签索引方法。首先对于ndarray,如二维的ndarray对象arr,则arr[i]和arr[i][j](等价于arr(i,j))都可以表示索引,其中arr[i]表示行索引,arr[i][j]表示有顺序的先进行第一个维度的索引(即行),再进行第二个维度的索引(即对应的行中的元素)。对于DataFrame,如一个DataFrame对象df.虽然同ndarray类似,都有类似的索引方式,但是直接索引的内容却不一样,比如df['a']得到第一列,这里不同于arr[i],对于DataFrame对象,直接的df[i]索引,得到的是第i+1列,而不是第i+1行。当进行切片索引的时候,比如重新定义df,切片索引又同ndarray一样,df[:2]得到前两行,而不是前两列;df[:][:1]得到第一列。故在切片索引的时候,又和ndarray一样了。此外,DataFrame对象还有索引方法df.iloc[]和df.loc[],前者是对index和columns为整数时的所以,后者是对index和columns为其他标签时的索引;对于df.iloc[],其索引方式和ndarray完全一样,既可以以df.iloc[i][j]的方式索引,也可以以df.iloc[i,j]的方式索引,当然也可以直接的df.iloc[i]的方式索引。因此,对于DtaFrame对象,其只有直接的df[][]索引和ndarray不一样,此时DataFrame先索引的是列,而不是行,也没有df[i,j]的索引方法,但是对于切片索引以及df.iloc的索引方法,和ndarray完全一样;此外,DataFrame还有df.loc的标签索引方法。36、执行importpandasaspd;obj=pd.Series(range(4),index=['a','b','c','d']);

obj[obj<1];输出结果为A、a0B、b1C、b0D、c2答案:A37、一个含有具体数据和空值的DataFrame数据对象df,执行df1=df.dropna(inplace=True)后:A、df1和df一样,都是删除了空值的结果B、df1为None,df为删除了空值的结果C、df1为删除了空值的结果,df不变D、df1为df操作前的值,df为删除了空值的结果答案:B38、obj=pd.Series(['c','a','d','a','a','b','b','c','c']),运行

list(obj.unique())返回结果为答案:['c','a','d','b']39、importpandasaspd;data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]});检索data中数值'two'的方法为:A、data.k1[1]B、data.loc[1,'k1']C、data.iloc[1,0]D、以上方法都正确答案:D40、importpandasaspd;data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]});执行data.k2.sum()返回结果为:答案:1841、由于数据类型和维度不同,Pandas的DataFrame对象和Series之间不能进行算数运算答案:错误

42、对于一个含有空值的DataFrame对象df,执行df.fillna(0,inplace=True)后,df中的空值填充为0,并且返回修改后的结果答案:错误43、不设置index和columns参数,基于一个多维数组使用pandas的DataFrame函数创建对象df,使用loc和iloc方法对df中数据进行检索的形式是相同的答案:正确44、一个DataFrame对象,调用其drop_duplicates()函数后,仅保留重复行中的最后一行答案:错误45、对一个DataFrame对象调用其mean()方法,缺省执行的操作是axis等于答案:046、对于包含多个列的DataFrame,调用其无参数的describe()函数后,仅返回数据类型为数值的列的描述性统计信息答案:正确47、对于两个columns完全相同的DataFrame,将其中一个的所有记录追加到另一个对象,可使用函数答案:append();append;concat();concat48、两个有相同和不同columns的DataFrame,如果要合并两者的所有属性和对应记录行,可使用如下方法A、join()B、merge()C、join()和merge()方法都可以D、没法合并答案:C

解析:49、importpandasaspd,numpyasnp;

pd.DataFrame(np.arange(10,25).reshape(3,5)).ndim返回值为:答案:250、Dataframe之间的连接方法有哪些?答案:Pandas提供了大量的方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论