当前位置: 首页 > 面试题库 >

计算矩阵中大于一个值的所有值

裴硕
2023-03-14
问题内容

我必须计算矩阵(二维数组)中大于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])

从那里获取的确切位置取决于您想要的结果形式。



 类似资料:
  • 这个问题可能是封闭的,因为它听起来很模糊,但我真的问这个,因为我不知道或者我的数学背景不够。 我试图实现一个挑战,其中一部分挑战要求我计算矩阵的最小值和最大值。我对矩阵的实现及其操作没有任何问题,但是什么是矩阵的最小值和最大值?考虑到3x3矩阵是9个数中最小的数,最大的是最大的还是其他什么?

  • 我有一个矩阵。只有唯一的颜色以不同的权重重复它们自己。从它们中,我得选择一半,另一半必须用从第一个中最接近的元素替换。 我想到了在图像中循环,并搜索最近的颜色为当前的一个。找到后,我把一个换成另一个。 但我有3个循环、、。前两个I循环通过RGB矩阵,第三个用于循环到包含最终颜色的矩阵。这需要一些时间来计算。 可以做些什么来加快它的速度? 循环如下所示: 表示选择为最终颜色的半色。 我可以考虑一些小

  • 我想让一个函数包含三个参数 二维数组。(整数数组[行][列]) 整数。(int n) 数组[i][j]的地址。 表示我的函数原型应该像这样 功能说明 > 第一个参数是2D数组,表示要处理的数据。 这里的代表n×n矩阵,是指需要所有元素平均的方阵的维数。 最后一个参数是子矩阵第一个元素的地址。 样本输入 例如,我们取3x3矩阵, 我要计算子矩阵 输出 则函数将返回8.25,即(8+7+9+9)/4。

  • 如上所述,我需要用Python找到矩阵的基-2-对数。当然,我知道公式$log_a(x)=ln(x)/ln(a)$,其中ln是自然对数,但据我所知,这只适用于标量参数x(如果我错了请纠正我)。至少我还没有看到任何论据,为什么这也适用于矩阵。 那么,有人知道是否存在这样一个内置在matrix-log2函数吗? 或者:由于几年前我使用过Mathematica,所以我知道了MatrixFunction[

  • 我有这张桌子, 我想要表中的uid计数和订单价格中的uid计数 我这样做: 但我得到的结果是: 有什么问题?

  • 问题内容: 我正在尝试计算Java中的逆矩阵。 我遵循伴随方法(首先计算伴随矩阵,然后转置该矩阵,最后将其乘以行列式值的倒数)。 当矩阵不太大时有效。我检查过,对于尺寸最大为12x12的矩阵,可以快速提供结果。但是,当矩阵大于12x12时,完成计算所需的时间呈指数增长。 我需要反转的矩阵是19x19,并且花费太多时间。消耗更多时间的方法是用于行列式计算的方法。 我使用的代码是: 有人知道如何更有效