我有一个 2D NumPy 数组,想用 255.0.0 替换其中大于或等于阈值 T 的所有值。据我所知,最基本的方法是:
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的方法是什么?
有没有更快(可能不那么简洁和/或不那么pythonic)的方法来做到这一点?
这将是用于人体头部 MRI 扫描的窗口/水平调整子程序的一部分。二维 numpy 数组是图像像素数据。
原文由 NLi10Me 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为最快和最简洁的方法是使用 NumPy 的内置 Fancy 索引。 If you have an
ndarray
namedarr
, you can replace all elements>255
with a valuex
as follows:我在我的机器上用一个 500 x 500 的随机矩阵运行它,将所有 >0.5 的值替换为 5,平均耗时 7.59 毫秒。