Joyful Pandas习题

链接:https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch1.html

一 、Python基础

1.列表推导式与条件赋值

(1)列表推导式语法[* for i in *]。其中第一个*为映射函数,输入为i,第二个*表示迭代对象。
(2)列表表达式还可支持多层嵌套。
(3)实用的语法糖条件赋值,形式为value = a if condition else b

L = [i*2 for i in range(7)]    #列表生成表达式
[i if i<=5 else 5 for i in L]  #条件赋值

2.匿名函数与map方法

(1)匿名函数无需多处调用的场合实用,不关心函数名,只关心映射关系
(2)map函数实现列表推导式的匿名函数映射。通过list将其返回值转为列表。

[(lambda x:2*x)(i) for i in range(5)]
list(map(lambda x:2*x, range(5)))

3.zip对象与enumerate方法

(1)zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,往往在循环迭代时使用。
(2)enumerate是一种特殊的打包,在迭代时绑定迭代元素的遍历序号。用zip对象也能简单地实现这个功能。
(3)两个列表建立字典映射,可以利用zip对象。
(4)*zip解压缩。

L1,L2,L3 = list('abc'),list('def'),list('hij')
list(zip(L1,L2,L3))
tuple(zip(zip(L1,L2,L3)))
for i,j,k in zip(L1,L2,L3):
    print(i,j,k)
L = list('abcd')
for index, value in enumerate(L):
    print(index, value)

二 、Numpy基础

1.np数组的构造

(1)np.array
(2)等差序列: np.linspacenp.arange
(3)特殊矩阵:zeroseyefull
(4)随机矩阵:np.ramdom,包括 randrandnrandintchoice

2.np数组的变形与合并

np.zeros((2,3)).T
np.r_[np.zeros((2,3)), np.zeros((2,3))]
np.c_[np.array([0,0]), np.zeros((2,3))]
target = np.arange(8).reshape(2,4)
np.ones((3,1)).reshape(-1)

3.np数组的切片与索引

(1)数组的切片模式支持使用slice类型的start:end:step切片,还可以直接传入列表的某个维度的索引进行切片。
(2)np.ix_对应维度上使用布尔索引。

np.arange(9).reshape(3,3)[:-1,[0,2]]
np.arange(9).reshape(3,3)[np.ix_([True,False,True],[True,False,True])]

4.常用函数

(1)where
(2)nonzeroargmaxargmin
(3)anyall
(4)cumprodcumsumdiff
(5)统计函数:maxminmeanstdvarsumquantilecovcorrcoef

5.广播机制

(1)标量和数组的操作
(2)二维数组之间的操作
(3)一维数组与二维数组的操作

res = 3*np.ones((2,3)) + 1
1 / res 
np.ones((3,2)) * np.array([[2,3]])
np.ones(3) + np.ones((2,3))

6.向量与矩阵的计算

(1)向量内积: dot
(2)向量范数和矩阵范数: np.linalg.norm
(3)矩阵乘法:@

三、练习

Ex1:利用列表推导式写矩阵乘法

Ex2:更新矩阵

Ex3:卡方统计量

Ex4:改进矩阵计算的性能

Ex5:连续整数的最大长度

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐