Pandas学习--Python基础
第一章 预备知识 Joyful Pandas习题一 、Python基础1.列表推导式与条件赋值2.匿名函数与map方法3.zip对象与enumerate方法二 、Numpy基础1.np数组的构造2.np数组的变形与合并3.np数组的切片与索引4.常用函数5.广播机制6.向量与矩阵的计算三、练习Ex1:利用列表推导式写矩阵乘法Ex2:更新矩阵Ex3:卡方统计量Ex4:改进矩阵计算的性能Ex5:连续整
第一章 预备知识
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.linspace
, np.arange
(3)特殊矩阵:zeros
,eye
,full
(4)随机矩阵:np.ramdom
,包括 rand
,randn
,randint
,choice
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)nonzero
,argmax
,argmin
(3)any
,all
(4)cumprod
,cumsum
,diff
(5)统计函数:max
,min
,mean
,std
,var
,sum
,quantile
,cov
,corrcoef
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:连续整数的最大长度
更多推荐
所有评论(0)