计算矩阵中小于某一值的所有值

Count all values in a matrix less than a value(计算矩阵中小于某一值的所有值)
本文介绍了计算矩阵中小于某一值的所有值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须计算矩阵(二维数组)中小于200的所有值。

我为此写下的代码是:

za=0   
p31 = numpy.asarray(o31)   
for i in range(o31.size[0]):   
    for j in range(o32.size[1]):   
        if p31[i,j]<200:   
            za=za+1   
print za

o31是一个图像,我正在将其转换为矩阵,然后查找这些值。

有没有更简单的方法?

推荐答案

numpy.where函数是您的朋友。因为它是为了充分利用数组数据类型而实现的,所以对于大图像,您应该注意到与您提供的纯Python解决方案相比,它的速度有所提高。

直接使用numpy.where将生成一个布尔掩码,指示某些值是否与您的条件匹配:

>>> data
array([[1, 8],
       [3, 4]])
>>> numpy.where( data > 3 )
(array([0, 1]), array([1, 1]))

掩码可用于直接对数组进行索引以获取实际值:

>>> data[ numpy.where( data > 3 ) ]
array([8, 4])

具体从哪里获取结果将取决于您希望结果以何种形式出现。

这篇关于计算矩阵中小于某一值的所有值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)