当前位置:   article > 正文

黑马程序员&数据分析与应用-第二章Numpy课后习题答案+解析+额外练习_创建一个数组,数组的shape为(5,0),元素都是0

创建一个数组,数组的shape为(5,0),元素都是0

课本封面

在这里插入图片描述

昨天学了Numpy,我就把课后习题做了一下,趁热打铁,顺便将自己思路分享给大家。

以下题目都是自己手敲的,代码和题解也都是自己想的,有错误是正常现象,还望大家多多包涵!

第二章 科学计算库Numpy

一、填空题

1 . 在Numpy中,可以使用数组对象 ndarray 执行一些科学计算。

解析:可参考课本19页。


2 .如果 ndarry.ndim 执行的结果为2,则表示创建的是一个二维数组

解析:维度:dimensions,ndim中的dim表示维度,n表示个数,应该是number of dimensions 的缩写,表示维度个数


3 . Numpy 的数据类型是有一个类型名和元素位长 的数字组成。

解析: 数据类型可参考课本22-23页,类型后面的数字即表示位长


4 . 如果两个数组的大小(ndarry.shape)不同,则他们进行算术运算时会出现广播体制

解析:广播体制相关知识点可见课本25页。广播体制可大概理解为,两个数组做运算必须要行列数相等,如果不等的话就要找到他们相通点,比如行数相同,或者列数相同,然后不等的地方就用数组中已有的数字填充满构成等行等列的两个数组。因为1是所有数的约数,所以如果有长度为1的行或列存在就能任意变换长度生成等行等列的两个数组。


5 . 花式索引是 NumPy 的一个术语,是指用整数数组或列表进行索引。

解析:数组或列表作为答案不一定准确。课本的原话是: 花式索引是指将整数数组或列表作为索引,然后根据索引数组或索引列表的每个元素作为目标数组的下标在进行取值。


二、判断题

1 . 通过 empty() 函数创建的数组,该数组中没有任何元素。

答:错。

解析:通过empty() 函数创建一个新的数组,该数组分配了内存空间,它里面填充有随机元素,且数据类型默认为float64。具体用法可参考课本21页。


2 . 如果没有没有明确的指明数组中元素的类型,则默认为float64.

答:错。

解析:一般来说,使用zeros,ones,empty函数创建的数据类型都是float64;使用arange函数创建的数据类型就是int32(linux与mac系统是int64位),array函数创建的数据类型则要根据里面的参数而定。见图。
在这里插入图片描述


3 . 数组之间的任何算术运算都会将运算应用到元素级。

答:正确.

解析:可见课本24页-矢量化运算。


4 . 多维数组操作索引时,可以将切片与整数索引混合使用。

答: 正确

解析:这么重要的切片可一定要会噢!见课本26-28页。


5 . 当通过布尔数组索引操作数组时,返回的数据是布尔数组中的 False 对应位置的值。

答: 错误

解析:返回的是True对应位置的值。


三、选择题

1、下列选项中,用来表示数组维度的属性是(shape)。

解析: 可参考19-20页 ndarray 对象的常用属性。


2、下面代码中,创建的是一个3行3列数组的是(np.ones((3,3)))。

解析: ones函数表示的是创建一个 N x M 的二维数组,其里面的第一个参数是元组,应包含两个元素,表示行和列,且要用“()” 将两个元素包括。因此在np.ones((3,3))是有两个括号包括的,一个括号表示的是ones函数,另一个括号表示这是一个元组。


3、 求下列程序的输出结果

arr_2d=np.array([[11,20,13],[14,25,16],[27,18,9]])
print(arr_2d[1,:1])
  • 1
  • 2

答: [14]

解析:花式切片确实够花式的,其中arr_2d[ ] 的第一个参数是行,第二个参数是列,都是从0开始数起。 那么第一个参数 1 就表示第一行,第二个参数 :1 表示 在[0,1)区间内的所有列数。因为是左闭右开不包括 1 ,所以这里就表示第0列。结合第一个参数,那么就是表示第 1 行 第 0 列的元素,在他们交叉部分,显然就只有一个,就是[14]。
在这里插入图片描述


4、略

坦白了,这题涉及到线性代数的矩阵转置的知识点,我忘了,不会。可参考课本30-31页。也可参考bilibili,有详细教学—>点此进入


5、下列函数或方法中,用来表示矢量化三元表达式的是 where() 函数。

解析: where 函数是一个三元表达式需要三个参数,第一个参数是布尔数据类型的数组,剩余两个也是数组。注意,这三个数组都应该是ndarry类型,而不是普通的列表,而且三个数组的形状应该是一样的,都要是同样的行数,同样的列数。它的作用相当于C语言的 a > b ? x:y,三目运算符,就是说如果布尔数组的元素值是真,就选A数组对应行列的元素,如果是假就选B数组对应行列的元素。其余函数可参考课本34-37页的内容。


五、程序题

1、创建一个数组,数组的 shape 为(5,0),元素都是0。

解析:这应该是很基础的基础题了,需要理解shape是啥。shape是表示数组的维度。numpy提供有一个专门创建全为0的数组的函数–zeros,可以一步到位。

但是刚操作了一下发现好像不能创建5行0列的数组

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/402566
推荐阅读
相关标签