笔记,数据(2)
参考:《Python科学计算》
一些常识性的程序片段:
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt x=np.arange(10,1,-1) print(x[[3,3,1,5,4,-3,4,-2]].reshape(2,4)) y=x[np.array([[2,4,3],[3,5,-2]])] print(y[1][2],y[(1,2)],y[1,2]) #几种常用的多维数组的选取方式 print(x>5) xs=slice(None,None,2) #用于创建下标 print(x[xs],x[np.s_[::2]]) #效果相同 print(np.random.randint(1,10,10)) #常用的随机数组 q=np.arange(0,36,1).reshape(6,6) mask=np.array([1,0,1,0,0,1],dtype=np.bool) #这里引申布尔数,0,1型判断,只有明确定义数据类型才能进行判别选取,不然以常数处理 #make1=[True,False,True,False,True] print(q[mask,2])#,q[make1,2]) ptype=np.dtype({'names':['name','age','weight'], 'formats':['S16','i','f']},align=True)#注意这里的复数(s),不然会报错 a=np.array([('Zhang',32,54.3),("zhao",22,50.9)],dtype=ptype) #结构数组的建立和使用,类似字典 print(a[0]["name"].decode("utf-8"), a[0]["name"]) #输出的b表示是BYTE字符串,转unicode可以用decode("utf-8"),对比如下 #help(np.dtype)
结果:


同维数组的计算类似单个元素的计算,如下:

# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt a=np.arange(5) b=np.arange(4,-1,-1) print(a==b,a>b) print(any(a==b),all(a>=b)) print(np.logical_xor(a==b,a>b)) #布尔运算使用的and、or、not,xor无法被重载,都以logical_开头 print(~np.arange(5),a) # and,not,or,xor分别对应 &,~,|,^ ;(xor是异或:如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0)
结果:


浙公网安备 33010602011771号