大家好我正在努力将一些代码从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技巧。
谢谢!
答案 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阵列一起使用。