np,pd练习题巩固


继续整理中…

np基础

data为数据框
data.argmax(axis=0)每列最大值纵坐标
max=data[data.argmax(axis=0),range(data.shpae[1])]取出每列最大值

np.all(max==data.max(axis=0)上述函数和max方法同理

np.ix_生成mesh(坐标轴点):Construct an open mesh from multiple sequences.

from numpy import *
a = array([2,3,4,5])
b = array([8,5,4])
c = array([5,4,6,8,3])
ax,bx,cx = ix_(a,b,c)#shape=(4,1,1),(1,3,1),(1,1,5)
x=ax+bx*cx#能够达到目的,运用了广播
x.shape=(4,3,5)

def ufunc_reduce(ufct, *vectors):
    vs = ix_(*vectors)
    r = ufct.identity
    for v in vs:
        r = ufct(r,v)
    return r

转置a.transpose()
np.inv(a)
点乘np.dot(a,b)
解线性方程np.solve(a,b)
eig(j)特征值和特征向量

矩阵类
A = np.matrix('1.0 2.0; 3.0 4.0')
A.T,A.I,np.solve(A,Y)

二维数组转化为矩阵类A=np.mat(X)
二维数组:<class ‘numpy.ndarray’>
矩阵:<class ‘numpy.matrixlib.defmatrix.matrix’>

不同点:

  • 对二维数组冒号切片产生一维数组,而矩阵产生二维矩阵

切片

  • 第一列和第三列
    A[:[1,3]]
    A.take([1,3],axis=1)
    跳过第一行:A[:,].take([1,3],axis=1)
    mesh跳过第一行A[np.ix_((1,2),(1,3))]取到第一第二行和第一第三列
  • 取第一行大于1的列
    A[:,A[0,:]>1]
    但是索引矩阵没这么方便M[:,M[0,:]>1]出错
    因为M[0,:]>1为(1,1)shape,改正:M[:,M.A[0,:]>1]

自动改变形状

a = arange(30)
a.shape = 2,-1,3  # -1 means "whatever is needed"
a.shape 
(2, 5, 3)

向量组合stacking
np.vstack
np.hstack

np刷题

np.info()寻求帮助
arr[::-1]反转向量

10找到数组[1,2,0,0,4,0]中非0元素的位置索引
np.nonzero([1,2,0,0,4,0])

15.创建一二维数组,其中边界值为1,其余值为0
a=np.ones(5)
a[1:-1,1:-1]=0
16.对于一个存在在数组,如何添加一个用0填充的边界?
np.pad(array, pad_width, mode, **kwargs)
z=np.pad(z,0,‘constant’,constant_values=0)
17. 以下表达式运行的结果分别是什么?
0np.nan空值
np.nan==np.nan假
np.inf>np.nan假
np.nan-np.nan空值
0.3==3
0.1真---------错了,为假

18.创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置
np.diag([1,2,3,4],k=-1)

19.创建一个8x8 的矩阵,并且设置成棋盘样式
a=np.zeros((8,8),dtype=int)
a[1::2,::2] = 1
a[::2,1::2] = 1
or
np.tile([[0,1],[1,0]],(4,4))

20.考虑一个 (6,7,8) 形状的数组,其第100个元素的索引(x,y,z)是什么?
unravel_index(indices, shape, order='C')
Converts a flat index or array of flat indices into a tuple
of coordinate arrays.
np.unravel_index(100,(6,7,8))

23.创建一个将颜色描述为(RGBA)四个无符号字节的自定义dtype?
color=np.dtype([(‘r’,np.ubyte),(“g”, np.ubyte, 1),(“b”, np.ubyte, 1),(“a”, np.ubyte, 1)])
u无符号整型,i有符号整型
27np数组的语法糖
Z**Z

2<>2

Z<-Z

1j*Z

Z/1/1

ZZ

29.如何从零位对浮点数组做舍入 ?
Z = np.random.uniform(-10,+10,10)
np.copysign(np.ceil(np.abs(Z)), Z)

30如何找到两个数组中的共同元素?
np.intersect1d(Z1,Z2)

33如何得到昨天,今天,明天的日期?
yesterday = np.datetime64(‘today’, ‘D’) - np.timedelta64(1, ‘D’)
today = np.datetime64(‘today’, ‘D’)
tomorrow = np.datetime64(‘today’, ‘D’) + np.timedelta64(1, ‘D’)

34 如何得到所有与2016年7月对应的日期?
np.arange(‘2016-07’, ‘2016-08’, dtype=‘datetime64[D]’)

35如何直接在位计算(A+B)*(-A/2)(不建立副本)?
(提示: np.add(out=), np.negative(out=), np.multiply(out=), np.divide(out=))

37.创建一个5x5的矩阵,其中每行的数值范围从0到4
广播
np.zeros((5,5))+np.arange(5).reshape(1,5)

41.对于一个小数组,如何用比 np.sum更快的方式对其求和?
Z = np.arange(10)
np.add.reduce(Z)

42 对于两个随机数组A和B,检查它们是否相等
提示:np.allclose, np.array_equal

43.创建一个只读数组(read-only)
Z.flags.writeable=False

44.将笛卡尔坐标下的一个10x2的矩阵转换为极坐标形式

46.创建一个结构化数组,并实现 x 和 y 坐标覆盖 [0,1]x[0,1] 区域
Z = np.zeros((5,5), [(‘x’,float),(‘y’,float)])
Z[‘x’],Z[‘y’]=np.meshgrid(np.linspace(0,1,5),np.linspace(0,1,5))
meshgrid按照坐标轴构建,第一个为x轴的大布局

https://www.runoob.com/numpy/numpy-broadcast.html
https://zhuanlan.zhihu.com/p/76186124

pd基础

pd50

pd主要分series类和dataframe类
df的构建包括数据、col、index
groupby中的作为新index
df内置很多方法,如.map .replace .value_counts() .sort_values .pivot_table(index,col,values,aggfunc)
.drop

23删除重复的行

df = pd.DataFrame({
   'A': [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7]})
print(df)
df.drop_duplicates
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值