文章目录

  • 一、间接联合排序
  • 二、所有最值相关方法
  • 三、有序插入
  • 四、定积分
  • 五、插值器对象

一、间接联合排序

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 npnames = 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)

二、所有最值相关方法

1、成对最大值最小值

  • max/min
  • argmax/argmin
  • nanmax/nanmin
  • nanargmax/nanargmin

2、nan解释

  • max:最大值
  • min:最小值
  • arg:间接,取下标
  • nan:忽略无效值求最值

3、练习代码

import numpy as npa = np.array([1, 2, np.nan, 4, 5])
print(np.max(a), np.min(a))  # nan既是最大值也是最小值
print(np.argmax(a), np.argmin(a))  # 取最值的下标(索引)
print(np.nanmax(a), np.nanmin(a))  # 忽略无效值的最值
print(np.nanargmax(a), np.nanargmin(a))  # 忽略无效值的最值下标

三、有序插入

1、引入
有序序列:[1, 2, 4, 5, 7, 8, 10]
被插序列:[6, 3]

2、调用方法

  • numpy.searchsorted(有序序列, 被插序列)
    返回插入的位置
  • numpy.insert(有序序列, 插入位置, 被插序列)
    直接插入,返回插入结果

3、练习代码

import numpy as npa = np.array([1, 2, 4, 5, 7, 8, 10])
b = np.array([6, 3])
c = np.searchsorted(a, b)  # 达到b有序插入在a后的位置下标
print(c)# 直接插入
d = np.insert(a, c, b)  # 将b按照c的位置序列插入到a中
print(d)

四、定积分

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 mpmin_x, max_x = -2.5, 2.5  # 标记水平坐标最值# 连续曲线
con_x = np.linspace(min_x, max_x, 1001)  # 生成1000个原始信息
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')  # 需要加一个kind参数,因为默认是线性的
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.plot(dis_x, dis_y, c='dodgerblue', label='Discrete')
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()

Python之数据分析(间接联合排序、所有最值相关函数、有序插入、定积分、插值器对象)相关推荐

  1. python numpy np.lexsort()(使用键序列执行间接稳定排序)(具体没太搞懂区别?)

    from numpy\core_multiarray_umath.py @array_function_from_c_func_and_dispatcher(_multiarray_umath.lex ...

  2. 《利用python进行数据分析》读书笔记

    <利用python进行数据分析>是一本利用python的Numpy.Pandas.Matplotlib库进行数据分析的基础介绍,非常适合初学者. 重要的python库 NumPy http ...

  3. 利用python进行数据分析——第十四章_数据分析案例

    文章目录 本章中的数据文件可从下面的github仓库中下载 利用python进行数据分析(第二版) 一.从Bitli获取 1.USA.gov数据 1.1纯python时区计数 1.2使用pandas进 ...

  4. 你还不会用python进行数据分析吗

    你还不会用python进行数据分析吗 1.案例背景 用户价值细分是了解用户价值度的重要途径,而销售型公司中对于订单交易尤为关注,因此基于订单交易的价值度模型将更适合运营需求.针对交易数据分析的常用模型 ...

  5. python DataScience数据分析笔记day06

    day06-矩阵-矢量函数转换-加法.除法.取余通用函数-三角函数-线性代数-傅里叶变换         19.矩阵             1.numpy.matrix 继承自 numpy.ndar ...

  6. 整理总结:利用Python进行数据分析及思维导图

    参考资料:机械工业出版社的<利用Python进行数据分析>(思维导图在最后面) 本篇目录 参考资料:机械工业出版社的<利用Python进行数据分析>(思维导图在最后面) 第一章 ...

  7. 个人python开发数据分析面试题分享

    1.Post和Get请求的区别? 答:GET 请求,请求的数据会附加在 URL 之后,以?分割 URL 和传输数据,多个参数用&连接.POST 请求:会把请求的数据放置在 HTTP 请求包的包 ...

  8. 利用python进行数据分析_从删库到跑路

    目录 前言 一 numpy模块 1.numpy的数据结构:多维数组ndarray 数组转置和轴对换 矩阵内积 通用函数 利用数组进行数据处理(矢量化) 将条件逻辑表述为数组运算 数组和统计法方法 约简 ...

  9. 利用Python进行数据分析_Wes McKinney著_唐学韬译_笔记

    因本人刚开始写博客,学识经验有限,如有不正之处望读者指正,不胜感激:也望借此平台留下学习笔记以温故而知新.这篇主要是利用Python进行数据分析的学习笔记. 利用Python进行数据分析 百度网盘链接 ...

最新文章

  1. 小米网络推广连夜更换品牌LOGO——科技越是进化就越接近生命的形态
  2. 在javascript当中发现了一个没有调用者的方法。
  3. centos7 安装webmin
  4. 微信知识付费小程序博客源码(带299条数据)
  5. 安装Cloudreve 新版V3(go版本)
  6. vue父子之间数据传递
  7. python 千万级数据处理_Python实现 ! 千万级别数据处理
  8. 输入一个日期,计算这个日期与 2018-03-12差多少天;
  9. 【网赚工具】语音转文字神器,无需安装就能使用,支持长语音识别
  10. 010 Editor for Mac(十六进制编辑器)
  11. 自动驾驶——Smooth Local Planning
  12. SAP—IDoc操作步骤
  13. 利用ArcGIS软件将csv文件转换为shp格式
  14. 多张图片截取相同位置相同大小
  15. Java每日一练(4)
  16. C语言中#if的使用
  17. 自制DIY 机器狗 完全教程 - MIT猎豹Cheetah
  18. 大型制造企业等级保护安全建设整改方案
  19. 中国计算机发展的历史和现状
  20. springboot集成ElasticSearch

热门文章

  1. Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
  2. 婚宴座位图html5,婚礼小知识,婚宴座位怎么安排才不得罪人(主桌)
  3. 比特币支付接口php,比特币支付php类
  4. ubuntu 编译安装nginx php mysql_ubuntu下安装nginx php mysql
  5. python文件批量重命名以数字~n的方式重命名_利用Python对文件进行批量重命名
  6. linux线程切换回调函数,linux C线程退出回调函数
  7. 计算机导论的知识,计算机导论课的认识
  8. html 答题一题一题展示,在线答题系统如何展示考试结果
  9. android 视网膜黄斑检查 amsler,自测黄斑病变 | 一张图搞定
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的公司管理系统