从numpy数组中取出满足条件的元素示例


Posted in Python onNovember 26, 2019

例如问题:从 arr 数组中提取所有奇数元素。

input:arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

output: #> array([1, 3, 5, 7, 9])

Solution:

#Input
 
>>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
#Solution
 
arr = arr[arr % 2 == 1]
 
>>> array([1, 3, 5, 7, 9])

这是对奇数元素的提取,其他条件同理,在这个问题上我们深入再学习一下,首先 numpy 中的 array 数组是可以直接对数组中的每个元素进行处理的。例如我们想对每个元素减一:

#input
 
>>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
#Solution
 
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr - 1
array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])

从上面的例子我们可以看出来,对 arr 直接进行减一操作,结果是对每一个元素都进行了减一的操作,数组的维度不变,为了满足取出特定条件的元素这个操作,我们可以进行条件判断,例如判断每个元素是否为奇数:

#input
 
>>> arr = np.arange(10)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#solution
 
>>> arr % 2 == 1
array([False, True, False, True, False, True, False, True, False, True])

由此可见,条件判断后输出为和 arr 相同维度的数组,但是其中每个元素为布尔类型的值,取值为数组 arr 对每个元素分别进行条件判断的结果。

下面我们分析对 arr 数组进行特定取值,给其一个布尔类型的 arr 数组,并且维度与 arr 相同,以此得到取值的目的:

#input
 
>>> arr_bool = np.array([1, 1, 0, 0, 1, 1, 0, 0, 1, 1], dtype=bool)
>>> arr_bool
array([ True, True, False, False, True, True, False, False, True, True])
 
#solution
>>> arr[arr_bool]
array([0, 1, 4, 5, 8, 9])

从上述例子,我们构建了一个布尔类型的数组为 arr_bool ,并且维度与 arr 相同,进行直接嵌入实现了取值,以此完成了我们最终的目的,可以对任意满足条件的元素进行提取。并且理解了其中的原理。

PS:番外篇,如果维度不同可以吗?

#input
 
>>> arr_bool = np.ones(11, dtype=bool)
>>> arr_bool
array([ True, True, True, True, True, True, True, True, True, True, True])   #注意!!这里有11个 True 哦。
 
#solution
>>> arr[arr_bool]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IndexError: boolean index did not match indexed array along dimension 0; dimension is 10 but corresponding boolean dimension is 11

由上可见,维度必须保持一致,从 arr 数组里才可以按照 bool 类型取出对应位置为 True 的元素。这个性质帮助我们可以更灵活的处理 numpy 数组。

PS2: 如何替换满足条件的元素为其它值呢?

>>> arr = np.arange(10)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> arr[arr%2 == 1] = -1
>>> arr
array([ 0, -1, 2, -1, 4, -1, 6, -1, 8, -1])

以上这篇从numpy数组中取出满足条件的元素示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python MD5文件生成码
Jan 12 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python三方库之requests的快速上手
Mar 04 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 Python
python实现图片上添加图片
Nov 26 #Python
numpy:找到指定元素的索引示例
Nov 26 #Python
python中seaborn包常用图形使用详解
Nov 25 #Python
解决python中的幂函数、指数函数问题
Nov 25 #Python
妙用itchat! python实现久坐提醒功能
Nov 25 #Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 #Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 #Python
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP模块memcached使用指南
2014/12/08 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
javascript脚本调试方法小结
2008/11/24 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
bootstrap table实例详解
2017/01/06 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
初学python数组的处理代码
2011/01/04 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python实现的购物车功能示例
2018/02/11 Python
Python语言快速上手学习方法
2018/12/14 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
安装docker-compose的两种最简方法
2019/07/30 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
实习评语
2013/12/16 职场文书
酒店副总岗位职责
2013/12/24 职场文书
原材料检验岗位职责
2014/03/15 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
机器人瓦力观后感
2015/06/12 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书