前言

  这其实算得上是一个图像处理中遇到的问题。当我们读入一张彩色图像后,希望知道图像中所有RGB值等于对应值的位置。例如,读入一张图片后,希望获取到所有像素值为(100,100,100)的像素点的坐标。首先,做一个实验。

代码

import numpy as npimg = np.random.randint(0, 255, [3, 3, 3])  # 随机生成一个3*3*3的矩阵,模拟RGB图
color = [100, 100, 100]                     # 目标颜色三通道值
img[1, 1, :] = [100, 100, 100]              # 使(1,1)处的值为所需值location = (img == color)
print(location)

输出

[[[False False False][False False False][False False False]][[False False False][ True  True  True][False False False]][[False False False][False False False][False False False]]]

  这样的一个实验得到的location是三维的Bool类型数组,而我们需要的其实是二维的数组。所以此时一般的思路就是,三个通道取与。

代码

import numpy as npimg = np.random.randint(0, 255, [3, 3, 3])  # 随机生成一个3*3*3的矩阵,模拟RGB图
color = [100, 100, 100]                     # 目标颜色三通道值
img[1, 1, :] = [100, 100, 100]              # 使(1,1)处的值为所需值location = (img == color)
# location = location[:, :, 0] * location[:, :, 1] * location[:, :, 2]
location = location[:, :, 0] & location[:, :, 1] & location[:, :, 2]
print(location)

输出

[[False False False][False  True False][False False False]]

  但是再仔细一想,Numpy中有一个取与的函数 np.all() ,所以我们上面的代码可以直接简化。

代码

import numpy as npimg = np.random.randint(0, 255, [3, 3, 3])  # 随机生成一个3*3*3的矩阵,模拟RGB图
color = [100, 100, 100]                     # 目标颜色三通道值
img[1, 1, :] = [100, 100, 100]              # 使(1,1)处的值为所需值location = np.all((img == color), axis=2)   # 在第二个维度上取与
print(location)

  这样一行简单的代码就可以简单地得到三个通道值等于指定值位置。同样的道理,更高维度的数组也能进行这样的操作。

已完

【Python】如何获取Numpy三维数组中目标值的位置相关推荐

  1. Python的一,二,三维数组中根据下标取得对应数值

    备注 使用语言 python 使用库 numpy 使用pycharm显示效果 : 左边中括号的数目即数组的维度 一维数组 一维数组不需要多个下标,因为只有一个维度,所以使用一个下标即可 # 使用了nu ...

  2. python多维数组添加元素_numpy中三维数组中加入元素后的位置详解

    今天做数据处理时,遇到了从三维数组中批量加入二维数组的需求.其中三维数组在深度学习的特征数据处理时经常会使用到,所以读者有必要对该小知识点做到清楚了解并掌握.现对三维数组中的元素位置结合代码做详细归纳 ...

  3. Python | Numpy三维数组维度变换/提取

    0. 问题描述 每次使用Numpy,遇到需要从(A,B,C)三维数组中提取(A,B).(A,C)或者(B,C)或者(A,)这几个维度数据时,总是忘记该如何切片,网上搜到的又太详细,这里做个笔记方便自己 ...

  4. python将二维和三维数组保存到txt文件

    首先要保证在你的python环境中装了numpy包,接下来我们要使用其中的两个函数用于存储和加载数组:np.savetxt()和np.loadtxt(). 二维数组的保存和获取 import nump ...

  5. Numpy数组中删除指定位置、指定行或指定列的数据:numpy.delete()

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Numpy数组中删除指定位置.指定行 或指定列的数据: numpy.delete() [太阳 ...

  6. numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)

    numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array) 目录

  7. numpy找到数组中符合条件的数

    numpy找到数组中符合条件的数 import numpy as nparr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 1 ...

  8. PHP 如何获取二维数组中某个key的集合(高性能查找)

    分享下PHP 获取二维数组中某个key的集合的方法. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码: $user = array( 0 => array( 'id' => 1 ...

  9. PHP获取二维数组中某一列的值集合

    PHP还是比较常用的,于是我研究了一下PHP二维数组,下面通过本文给大家介绍PHP获取二维数组中某一列的值集合,对php数组二维数组的值相关知识感兴趣的朋友一起学习吧 PHP还是比较常用的,于是我研究 ...

最新文章

  1. 如何在组件模板中选择元素?
  2. Python学习笔记011_模块_标准库_第三方库的安装
  3. asset文件夹路径 unity_我们来捣鼓一下Unity的平台跳跃Microgame
  4. 利用find同时查找多种类型文件
  5. c++源码矢量图形编辑器_下一代代码编辑器的设想
  6. 华为云TaurusDB性能挑战赛-java赛题mvn编译时报错:不支持 diamond 运算符
  7. 2912: 奇怪的加法问题(XOR的加法写法)
  8. 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志
  9. EXCEL同一个数据较多的表格里自己比较数据(分屏)
  10. AWD竞赛脚本大全——从攻击到防御
  11. ISA防火墙简单安装配置实例
  12. 数字化住宅小区对计算机网络有需求,浅谈智能小区宽带接入及其技术发展趋势...
  13. 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机专业排名好不好?_托普仕留学...
  14. ubuntu硬盘序列号怎么查询_linux查看设备和硬盘序列号 ip mac地址
  15. Visual Studio调试XtraReport脚本
  16. Moto G 的开发者模式
  17. 余秋雨文选——关于中年
  18. mysql修改配置文件进行优化
  19. 服务器部署 winscp+putty
  20. Ubuntu 16.04 安装搜狗输入法(打中文)

热门文章

  1. 小巧Linux发行版本,老机器也不愁
  2. 2021年100题Java春招面试题
  3. 当async/await遇上forEach
  4. DreamFactory入门指南
  5. 行为设计模式 - 访客设计模式
  6. 【转载翻译】Debian配置Networking 和 apt-get 源信息 开启root远程登录权限
  7. 60秒验证码倒计时重置
  8. 智慧教室解决方案和移动授课概念说明
  9. 您应该知道的ES2020中的10个JavaScript新功能
  10. 115_Power Pivot之HR薪酬计算:公积金、社保、个税、实发工资相关