检查一个值是否大于另一个值,如果不替换为较小的值idl to python

检查一个值是否大于另一个值,如果不替换为较小的值idl to python,python,python-3.x,image-processing,code-translation,idl-programming-language,Python,Python 3.x,Image Processing,Code Translation,Idl Programming Language,大家好,我正在将一些代码从IDL切换到python,这里显示了一个函数: for i=0l,dim[0]-1 do begin for j=0l,dim[1]-1 do begin y = reform(image[i,j,0:nchannels-1]) > 0 这基本上是一个包含每个通道中所有像素值的列表。改革去掉了退化维度,所以每个通道只有一个值列表。然后,在idl中,>符号与写入GT不同。如果使用该符号,则表示检查列表中的值是否大于0,如果不大于0,则仅将

大家好,我正在将一些代码从IDL切换到python,这里显示了一个函数:

for i=0l,dim[0]-1 do begin
     for j=0l,dim[1]-1 do begin
        y = reform(image[i,j,0:nchannels-1]) > 0
这基本上是一个包含每个通道中所有像素值的列表。改革去掉了退化维度,所以每个通道只有一个值列表。然后,在idl中,>符号与写入GT不同。如果使用该符号,则表示检查列表中的值是否大于0,如果不大于0,则仅将0放在那里

我知道我可以编写一个循环来实现这一点,但我想知道是否有人有任何漂亮的python技巧可以在一行中实现这一点


谢谢

我想你要找的是numpy.clip()


它也适用于您的3D阵列。

没有什么只是我突出显示的方式,这是我关注的线条,但我想这只是让人困惑。我把它拿出来
import numpy as np
a = np.array([-3,5,9,1,-7,8,-8,-8,1,3,9])
a.clip(0)
# returns: array([0, 5, 9, 1, 0, 8, 0, 0, 1, 3, 9])