python由已知数组快速生成新数组的方法


Posted in Python onApril 08, 2020

需求描述

在利用numpy进行数据分析时,常有的一个需求是:根据已知的数组生成新数组。这个问题又可以分为两类:

  1. 根据筛选条件生成子数组;
  2. 根据变换条件生成新数组(新数组shape与原数组相同)

下面简单总结.

生成子数组

情况1

已知数组a,以及若干筛选条件conds,要求从数组a中生成一个子数组b。

解决办法:b=a[conds]比如b=a[a>0],b=a[(a>=1)|(a<=-2)], b=a[(a>=1)&(a<=3)]

实例:如下

# 实例1.1:已知数组a,要求找出所有a>0的元素,然后生成一个新数组。
a = np.arange(-5,5,1)
print('原数组a:',a)
b = a[a>0]
print('实例1结果:',b)

# 实例1.2:已知数组a,要求找出所有a>=1或a<=-2的元素,然后生成一个新数组。
b = a[(a>=1) | (a<=-2)]
print('实例2结果:',b)

# 实例1.3:已知数组a,要求找出所有a>=1并且a<=3的元素,然后生成一个新数组。
b = a[(a>=1) & (a<=3)]
print('实例3结果:',b)

运行结果:

原数组a: [-5 -4 -3 -2 -1  0  1  2  3  4]
实例1结果: [1 2 3 4]
实例2结果: [-5 -4 -3 -2  1  2  3  4]
实例3结果: [1 2 3]

情况2

已知数组a和数组b(shape相同),以及对数组a的筛选条件conds_a。要求从数组b中生成一个子数组c,其中的元素id,与满足筛选条件的数组a的元素id一一对应。

解决办法:

c = b[conds_a],比如c = b[(a>=1) & (a<=3)]

实例:如下

a = np.arange(-5,5,1)
b = np.arange(-50,50,10)
print('数组a:',a)
print('数组b:',b)

c = b[(a>=1) & (a<=3)]
print('新数组c:', c)

运行结果:

数组a: [-5 -4 -3 -2 -1  0  1  2  3  4]
数组b: [-50 -40 -30 -20 -10   0  10  20  30  40]
新数组c: [10 20 30]

变换成新数组

已知数组a,以及若干变换条件conds,要求生成一个新数组b(与原数组shape相同)。解决办法:

方法1:np.where(where(condition, [x, y]))
使用场景:当变换条件只有两个以下时,比如实例2.1。该方法等价于:if condition x else y

方法2: np.select(condlist, choicelist, default=0)
使用场景:当变换条件有任意多个时,比如实例2.2。该方法等价于:

if condlist[0]:
  choicelist[0]
elif condilist[1]:
  choicelist[1]
...
else:
  default

方法3:np.piecewise(x, condlist, funclist, *args, **kw)

使用场景:同方法2,只不过变换条件较复杂,无法直接写出,要用函数来表示。
实例:如下

# 实例2.1:已知数组a,要求对所有a<0的元素取绝对值,对其他元素设为0,然后生成一个新数组
a = np.arange(-5,5,1)
print(a)
b = np.where(a<0, abs(a),0)
print('实例2.1结果:',b)

# 实例2.2:已知数组a,要求对所有a<0的元素取绝对值,对a=0的元素+100,对a>0的元素平方,然后生成一个新数组
b = np.select([a<0, a==0, a>0], [abs(a), a+100, a**2])
print('实例2.2结果:',b)

运行结果:

[-5 -4 -3 -2 -1  0  1  2  3  4]
实例2.1结果: [5 4 3 2 1 0 0 0 0 0]
实例2.2结果: [5 4 3 2 1 100 1 4 916]

到此这篇关于python由已知数组快速生成新数组的方法的文章就介绍到这了,更多相关python 已知数组快速生成新数组内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木

Python 相关文章推荐
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
Python绘制频率分布直方图的示例
Jul 08 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
python Django里CSRF 对应策略详解
Aug 05 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 #Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
Apr 08 #Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 #Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 #Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 #Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 #Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 #Python
You might like
php中的登陆login实例代码
2016/06/20 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python爬虫的工作原理
2017/03/05 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
python Matplotlib模块的使用
2020/09/16 Python
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
应届生幼儿园求职信
2013/11/12 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
《理想》教学反思
2014/02/17 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
新店开业策划方案怎么书写?
2019/07/05 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python