当前位置: 首页 > 知识库问答 >
问题:

替换Python NumPy数组中大于某个值的所有元素

施越彬
2023-03-14

我有一个2D NumPy数组,希望将其中大于或等于阈值T的所有值替换为255.0。据我所知,最基本的方法是:

shape = arr.shape
result = np.zeros(shape)
for x in range(0, shape[0]):
    for y in range(0, shape[1]):
        if arr[x, y] >= T:
            result[x, y] = 255

有没有更快(可能不那么简洁和/或不那么pythonic)的方法可以做到这一点?

这将是用于人头MRI扫描的窗口/水平调整子程序的一部分。2D numpy数组是图像像素数据。

共有1个答案

阮昊阳
2023-03-14

我认为最快和最简洁的方法是使用Numpy内置的花式索引。如果有一个名为arrndarray,则可以将所有元素>255替换为值x,如下所示:

arr[arr > 255] = x

我在我的机器上运行了一个500×500随机矩阵,将所有>0.5的值替换为5,平均耗时7.59ms。

In [1]: import numpy as np
In [2]: A = np.random.rand(500, 500)
In [3]: timeit A[A > 0.5] = 5
100 loops, best of 3: 7.59 ms per loop
 类似资料:
  • 本文向大家介绍Python替换NumPy数组中大于某个值的所有元素实例,包括了Python替换NumPy数组中大于某个值的所有元素实例的使用技巧和注意事项,需要的朋友参考一下 我有一个2D(二维) NumPy数组,并希望用255.0替换大于或等于阈值T的所有值。据我所知,最基础的方法是: 有更简洁和pythonic的方式来做到这一点吗? 有没有更快(可能不那么简洁和/或不那么pythonic)的方

  • 我试图找到一个单词中所有元音的所有可能组合。例如给定“你好”: 我编写了以下函数,它只接受每个元音,在每个元音处,它只会将其全部替换为元音并将每个版本添加到列表中。我正在尝试根据需要将其更改为排列,但它不起作用。我尝试在附加后插入元音(“”.join(string),arr),但这会导致无限递归。 有人有什么建议吗?

  • 问题内容: 假设我有以下文件 我想将文档中具有代码“ efg”的所有元素的数量更改为0。我该怎么做?我应该对位置运算符使用循环吗? 问题答案: 最好的方法是匹配数组元素,并 使用 API 使用位置运算符分别进行更新。您真的不应该吹牛。

  • 给定任何自然数数组,例如:[2,1,2,3]查找数组是否可以转换为Max数组(打印-“是”)或如果不能(打印-“否”) 使其成为最大数组 - 将数组的每个元素转换为等于其最大元素。在上面的例子中,它将是[3,3,3,3],但是通过遵循这些规则 - 一次将任何两个元素增加1(正好是2个元素。不能一次增加一个或多个元素) 多次执行此操作,直到将每个元素转换为最大元素(如果可能,请打印“YES”,否则打

  • 例如,给了我一个数组,我必须检查数组中所有前面元素的总和是否大于下一个元素。 例如,我已经给出了(1,2,3)现在1 2不大于3,所以在这种情况下是错误的。再次给出(1,1,1)。现在 1 1 严格大于 1。

  • 我只想替换字符串中的单词,如果单词字符或单词前后没有连字符。 文本: 替换后的预期结果: 正则表达式: < li >正则表达式当前仅匹配第一个匹配项(< code>#后的按钮)。我需要做什么来匹配所有事件? < li >如何在Java中将< code>button替换为< code>text或任何其他单词? 我读过主题我能在Java regex中替换组吗?,但是我真的不明白如何为我的特殊情况使用示