继续整理中…
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==30.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基础
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