【Python】如何获取Numpy三维数组中目标值的位置
前言
这其实算得上是一个图像处理中遇到的问题。当我们读入一张彩色图像后,希望知道图像中所有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三维数组中目标值的位置相关推荐
- Python的一,二,三维数组中根据下标取得对应数值
备注 使用语言 python 使用库 numpy 使用pycharm显示效果 : 左边中括号的数目即数组的维度 一维数组 一维数组不需要多个下标,因为只有一个维度,所以使用一个下标即可 # 使用了nu ...
- python多维数组添加元素_numpy中三维数组中加入元素后的位置详解
今天做数据处理时,遇到了从三维数组中批量加入二维数组的需求.其中三维数组在深度学习的特征数据处理时经常会使用到,所以读者有必要对该小知识点做到清楚了解并掌握.现对三维数组中的元素位置结合代码做详细归纳 ...
- Python | Numpy三维数组维度变换/提取
0. 问题描述 每次使用Numpy,遇到需要从(A,B,C)三维数组中提取(A,B).(A,C)或者(B,C)或者(A,)这几个维度数据时,总是忘记该如何切片,网上搜到的又太详细,这里做个笔记方便自己 ...
- python将二维和三维数组保存到txt文件
首先要保证在你的python环境中装了numpy包,接下来我们要使用其中的两个函数用于存储和加载数组:np.savetxt()和np.loadtxt(). 二维数组的保存和获取 import nump ...
- Numpy数组中删除指定位置、指定行或指定列的数据:numpy.delete()
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Numpy数组中删除指定位置.指定行 或指定列的数据: numpy.delete() [太阳 ...
- numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)
numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array) 目录
- numpy找到数组中符合条件的数
numpy找到数组中符合条件的数 import numpy as nparr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 1 ...
- PHP 如何获取二维数组中某个key的集合(高性能查找)
分享下PHP 获取二维数组中某个key的集合的方法. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码: $user = array( 0 => array( 'id' => 1 ...
- PHP获取二维数组中某一列的值集合
PHP还是比较常用的,于是我研究了一下PHP二维数组,下面通过本文给大家介绍PHP获取二维数组中某一列的值集合,对php数组二维数组的值相关知识感兴趣的朋友一起学习吧 PHP还是比较常用的,于是我研究 ...
最新文章
- 如何在组件模板中选择元素?
- Python学习笔记011_模块_标准库_第三方库的安装
- asset文件夹路径 unity_我们来捣鼓一下Unity的平台跳跃Microgame
- 利用find同时查找多种类型文件
- c++源码矢量图形编辑器_下一代代码编辑器的设想
- 华为云TaurusDB性能挑战赛-java赛题mvn编译时报错:不支持 diamond 运算符
- 2912: 奇怪的加法问题(XOR的加法写法)
- 《ELK Stack权威指南(第2版)》一3.5 Windows系统日志
- EXCEL同一个数据较多的表格里自己比较数据(分屏)
- AWD竞赛脚本大全——从攻击到防御
- ISA防火墙简单安装配置实例
- 数字化住宅小区对计算机网络有需求,浅谈智能小区宽带接入及其技术发展趋势...
- 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机专业排名好不好?_托普仕留学...
- ubuntu硬盘序列号怎么查询_linux查看设备和硬盘序列号 ip mac地址
- Visual Studio调试XtraReport脚本
- Moto G 的开发者模式
- 余秋雨文选——关于中年
- mysql修改配置文件进行优化
- 服务器部署 winscp+putty
- Ubuntu 16.04 安装搜狗输入法(打中文)