文章目录
- 一、间接联合排序
- 二、所有最值相关方法
- 三、有序插入
- 四、定积分
- 五、插值器对象
一、间接联合排序
1、间接联合排序: 获取排序样本的下标后来排序0 1 2 3 4 5 6 7 8
原始序列:8 2 3 1 7 4 6 5 9
直接排序:1 2 3 4 5 6 7 8 9
间接排序:3 1 2 5 7 6 4 0 8
2、使用方法
- numpy.lexsort((参考序列, 待排序列))
返回索引序列 - np.sort_complex(A)
复数的排序,按照实部进行排,实部相同看虚部
3、练习代码
import numpy as np
names = np.array(['李一', '刘二', '王三', '赵四', '姚五'])
scores = np.array([90, 70, 50, 80, 60])
ages = np.array([10, 20, 20, 40, 50])
print(names[np.lexsort((scores, ages))])
c = ages + scores * 1j
d = np.sort_complex(c)
print(d)
![联合排序](https://img-blog.csdnimg.cn/2020081122301249.png)
二、所有最值相关方法
1、成对最大值最小值
- max/min
- argmax/argmin
- nanmax/nanmin
- nanargmax/nanargmin
2、nan解释
- max:最大值
- min:最小值
- arg:间接,取下标
- nan:忽略无效值求最值
3、练习代码
import numpy as np
a = np.array([1, 2, np.nan, 4, 5])
print(np.max(a), np.min(a))
print(np.argmax(a), np.argmin(a))
print(np.nanmax(a), np.nanmin(a))
print(np.nanargmax(a), np.nanargmin(a))
![最值](https://img-blog.csdnimg.cn/20200811223237486.png)
三、有序插入
1、引入
有序序列:[1, 2, 4, 5, 7, 8, 10]
被插序列:[6, 3]
2、调用方法
- numpy.searchsorted(有序序列, 被插序列)
返回插入的位置 - numpy.insert(有序序列, 插入位置, 被插序列)
直接插入,返回插入结果
3、练习代码
import numpy as np
a = np.array([1, 2, 4, 5, 7, 8, 10])
b = np.array([6, 3])
c = np.searchsorted(a, b)
print(c)
d = np.insert(a, c, b)
print(d)
![有序插入](https://img-blog.csdnimg.cn/20200811223433538.png)
四、定积分
1、导入库: import scipy.integrate as si
2、存原函数:
def f(x):
y = …x…
return y
3、上下限: a, b = __, __
4、求定积分: si.quad(f, a, b)[0]
返回的结果是定积分值
五、插值器对象
1、用处: 用于样本非常少,但又希望曲线足够平滑的时候。
2、使用步骤
1)import scipy.interpolate as si
2)si.interp1d(离散样本水平坐标, 离散样本垂直坐标, kind=‘插值器种类’)
返回一个一维插值器对象;
注意:p1d中间的是数字1,插值器种类默认的线性插值器
然后将该插值器对象当做函数去运行,传入参数:插值样本的水平坐标
最后会得到插值样本的垂直坐标
3、插值器案例(样本极少)
import numpy as np
import scipy.interpolate as si
import matplotlib.pylab as mp
min_x, max_x = -2.5, 2.5
con_x = np.linspace(min_x, max_x, 1001)
con_y = np.sinc(con_x)
dis_x = np.linspace(min_x, max_x, 11)
dis_y = np.sinc(dis_x)
linear = si.interp1d(dis_x, dis_y)
lin_x = np.linspace(min_x, max_x, 51)
lin_y = linear(lin_x)
cubic = si.interp1d(dis_x, dis_y, kind='cubic')
cub_x = np.linspace(min_x, max_x, 51)
cub_y = cubic(cub_x)
mp.figure('Interpolation', facecolor='lightgray')
mp.subplot(2, 2, 1)
mp.title('Continuous', fontsize=16)
mp.ylabel('y', fontsize=12)
mp.tick_params(labelsize=10)
mp.plot(con_x, con_y, c='limegreen', label='Continuous')
mp.legend()
mp.subplot(2, 2, 2)
mp.title('Discrete', fontsize=16)
mp.ylabel('y', fontsize=12)
mp.tick_params(labelsize=10)
mp.scatter(dis_x, dis_y, c='dodgerblue', label='Discrete')
mp.legend()
mp.subplot(2, 2, 3)
mp.title('Linear', fontsize=16)
mp.xlabel('x', fontsize=12)
mp.ylabel('y', fontsize=12)
mp.tick_params(labelsize=10)
mp.plot(lin_x, lin_y, 'o-', c='orangered', label='Linear')
mp.scatter(dis_x, dis_y, c='green', zorder=3)
mp.legend()
mp.subplot(2, 2, 4)
mp.title('Cubic', fontsize=16)
mp.xlabel('x', fontsize=12)
mp.ylabel('y', fontsize=12)
mp.tick_params(labelsize=10)
mp.plot(cub_x, cub_y, 'o-', c='hotpink', label='Cubic')
mp.scatter(dis_x, dis_y, c='blue', zorder=3)
mp.legend()
mp.tight_layout()
mp.show()
![插值器对象](https://img-blog.csdnimg.cn/20200811223831962.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ZpZXdpbmZpbml0ZWx5,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)