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

时间:2018-06-18 20:33:32

标签: 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放在那里。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是numpy.clip()。

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])

它还可以与您的3D阵列一起使用。