python矩阵中找满足条件的元素_从numpy数组中取出满足条件的元素示例
例如问题:从 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 "", line 1, in
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矩阵中找满足条件的元素_从numpy数组中取出满足条件的元素示例相关推荐
- python数组删除最后一个元素_删除numpy数组中的最后一个元素
我有一个纽比阵列:array([ 0.49010508, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.09438115, 0. , 0. , 0. , 0. , 0. , ...
- python定义空数组_在numpy数组中设置空值
如何根据条件使numpy数组中的某些值为空? 我不明白为什么我最终得到的是0,而不是不满足条件的null或空值...b是用0和1值填充的numpy数组,c是另一个完全填充的numpy数组.所有阵列均为 ...
- python数组中最大元素_Python获取numpy数组中最大的5个元素(保持原顺序)
本文主要演示numpy的argsort()函数的用法.这个函数的返回值是数组中的元素排序后的原下标,例如np.argsort([3,1,2])的返回结果是array([1, 2, 0], dtype= ...
- vector删除第i个元素_[LeetCode] 215. 数组中的第K个最大元素
题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) 题目描述: 在未排序的数组中找到第 k 个最大的元素.请 ...
- python怎么从数组中提取连续的数字_从numpy数组中删除连续的数字
我是python新手,但我对我要做的这个项目真的很困惑.我看到了一张图片here.我要做的是找出图像中像素范围从0到255的所有方块的平均值.下面的代码显示了我用来计算图片值的方法.出现的问题是像素/ ...
- js list删除指定元素_删除js数组中的指定元素,有这两步就够了
js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单. 1.JS的数组对 ...
- 从键盘输入10个互不相同的整数,找出其中最小的元素将其与数组中的第一个元素进行交换。
题目: /* 从键盘输入10个互不相同的整数,找出其中最小的元素将其与数组中的第一个元素进行交换. */ 代码: c++做的. #include<iostream> using names ...
- python取出数组大于某值_Python替换NumPy数组中大于某个值的所有元素实例
我有一个2D(二维) NumPy数组,并希望用255.0替换大于或等于阈值T的所有值.据我所知,最基础的方法是: shape = arr.shape result = np.zeros(shape) ...
- 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标
34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...
最新文章
- Navicat怎样筛选数据
- 单链表进阶学习 二段
- init tarray 太大_[NOIP 2001提高组T4]Car的旅行路线
- Spring Cloud构建微服务架构-Hystrix监控面板
- 网络学习(三)安装VMware Workstation 7
- Linux:VMware12.5.7安装Ubuntu16.04.2失败的解决方案cpufreq: cpufreq_online: Failed to initialize policy for cpu
- leetcode之回文链表
- android中的progressbar,Android中ProgressBar用法简单实例
- access h3c交换机光口_H3C交换机配置基本命令
- Labview的CAN通讯
- mysql数据库外键的作用
- iphone里如何实现像图片浏览那样的自动隐藏和导航条和工具栏
- 部署外网网站(二)——宝塔搭建服务器
- vue中如何实现列表的详情页获取及渲染
- fastposter v2.6.2 发布 程序员专属海报生成器
- java面试常见设计模式
- 向量的点乘与叉乘的几何意义
- 中国民航飞行学院人事薪资管理系统实践案例
- 安卓 设置默认短信应用(两种实现)
- 数字化营销模式有哪些?数字化营销怎么做?