这里记录我写过的一些小函数,方便我以后找,也方便大家^v^
有点杂乱无章,哈哈
1、点线间距离:
def distance_point_line(point,line):
“”“import numpy as np”“”
k = line[0]
b = line[1]
return np.abs(point[1]-k*point[0]-b)/np.sqrt(1+k*k)
2、两点间中点坐标:
def midpoint(point1,point2):
return[0.5*(point1[0]+point2[0]),0.5*(point1[1]+point2[1])]
3、将点按绝对值向下取整(主要是画图添加文字时取坐标用的):
def int_point(point):
return[int(point[0]),int(point[1])]
4、一次性从字符串中读取一段,以markers为间隔
def get_data_single(text,read_flag,markers,dropout_markers=False):
"""import re"""
if dropout_markers:
dropout_markers = len(markers)
else:
dropout_markers = 0
read_flag_ = read_flag
read_flag = read_flag_ + re.search(markers,text[read_flag+1:]).span()[1] + 1
data = text[read_flag_:read_flag-dropout_markers]
return data,read_flag
使用示例:
read_flag = 0
text = '35 35 33 34 36 37 37 34 34 37 34 37 38 37 35 33 33 32 39 33 39 34 35 37 36 37 35 32 34 35 33 35 37 36 38'
markers = ' '
for _ in range(10):
data,read_flag = get_data_single(text,read_flag,markers,dropout_markers=True)
print(data,end='\t')
5、数据截取,提取数据data.shape=(2,n),要求第一行的数据要在range1范围内,第二行数据在range2范围内,若不满足,整列删除
def data_intercept(data,range1,range2):
"""import numpy as np"""
data = data[np.expand_dims((data[0,:]<range1[1])&(data[0,:]>range1[0]),0).repeat(2,axis=0)].reshape(2,-1)
data = data[np.expand_dims((data[1,:]<range2[1])&(data[1,:]>range2[0]),0).repeat(2,axis=0)].reshape(2,-1)
return data
使用示例:
data = np.random.randn(2,10)
range1=[-2,0]
range2=[0,2]
data = data_intercept(data,range1,range2)