这其实算得上是一个图像处理中遇到的问题。
当我们读入一张彩色图像后,希望知道图像中所有RGB值等于对应值的位置
。例如,读入一张图片后,希望获取到所有像素值为(100,100,100)的像素点的坐标。首先,做一个实验。
import numpy as np
img = np.random.randint(0, 255, [3, 3, 3])
color = [100, 100, 100]
img[1, 1, :] = [100, 100, 100]
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 np
img = np.random.randint(0, 255, [3, 3, 3])
color = [100, 100, 100]
img[1, 1, :] = [100, 100, 100]
location = (img == color)
location = location[:, :, 0] & location[:, :, 1] & location[:, :, 2]
print(location)
[[False False False]
[False True False]
[False False False]]
但是再仔细一想,Numpy中有一个取与的函数 np.all() ,所以我们上面的代码可以直接简化。
import numpy as np
img = np.random.randint(0, 255, [3, 3, 3])
color = [100, 100, 100]
img[1, 1, :] = [100, 100, 100]
location = np.all((img == color), axis=2)
print(location)
这样一行简单的代码就可以简单地得到三个通道值等于指定值位置。同样的道理,更高维度的数组也能进行这样的操作。
前言 这其实算得上是一个图像处理中遇到的问题。当我们读入一张彩色图像后,希望知道图像中所有RGB值等于对应值的位置。例如,读入一张图片后,希望获取到所有像素值为(100,100,100)的像素点的坐标。首先,做一个实验。代码import numpy as npimg = np.random.randint(0, 255, [3, 3, 3]) # 随机生成一个3*3*3的矩阵,模拟RGB图color = [100, 100, 100] # 目标颜色三通
c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
print(c.mean(axis=1))#行
print(c.mean(axis=0))#列
[ 2.5 5.5 8.5]
[ 4. 5. 6. 7.]
以上这篇python NumPy ndarray二维数组 按照行列求平均实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
您可能感兴趣的文章:对python中字典keys,values,it
最近需要从热力图中找出关键点的坐标,也就是极大值的行和列。搜寻了网上的一些方法,在这里总结一下。使用numpy进行多维数组中最大值的行和列搜寻非常的灵活,有以下几种方法可供参考。
方法一:np.max()函数 + np.where()函数
如下图所示,x是一个 3×3 的二维np.array,首先使用np.max(x)求出x中的最大值,然后使用np.where函数找出数组x中最大值所在的位置。当然这只是np.where的其中一种用法,np.where是一个非常方便的函数,用法还有很多,具体可
今天做数据处理时,遇到了从三维数组中批量加入二维数组的需求。其中三维数组在深度学习的特征数据处理时经常会使用到,所以读者有必要对该小知识点做到清楚了解并掌握。现对三维数组中的元素位置结合代码做详细归纳总结,方便日后查阅和为网友答疑!
图示效果图:
直接贴代码:
def test3D():
import numpy as np
data_array = np.zeros((3, 5, 6), dtype=np.int)
data_array[1, 2, 2] = 1
print(data_array)
介绍:通过np.zeros创建一个3行5列6个通道的三维数组,并给第二个通道的第一
本人也是新手,需要实现什么功能很多时候就是谷歌搜,一搜搜好几个才能解决问题,就像本文这个问题,我搜索到很多结果就只能找到第一个元素的索引,根本就文不是我想要的,反正大佬八成也看不到这篇文章,就随便写写啦
本文使用python自...
本文实例讲述了动态规划之矩阵连乘问题Python实现方法。分享给大家供大家参考,具体如下:
给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。
A1={30×35} ; A2={35×15} ;A3={15×5} ;A4={5×10} ;A5={10×20} ;A6={20×25} ;
结果为:((A1(A2A3))((A4A5)A6)) 最小的乘次为15125。
原问题为n个矩阵连乘,将原问题分解为子问题,即当n等于1,2,3…..时。
n==1时,单一矩阵,不