If statement 规避if-else检查的方法
我只是想知道我是否想用本文(p5-6)中的算法实现一个将波长转换为(r,g,b)的程序,而不是用if-else之类的方法来检查波长的值If statement 规避if-else检查的方法,if-statement,numpy,optimization,conditional,vectorization,If Statement,Numpy,Optimization,Conditional,Vectorization,我只是想知道我是否想用本文(p5-6)中的算法实现一个将波长转换为(r,g,b)的程序,而不是用if-else之类的方法来检查波长的值 if wavelength>380 and wavelength<410: # do something elif wavelength<440: # do something elif wavelength<490: # do something, and so on 如果波长>380且波长是,则有。若你们的波
if wavelength>380 and wavelength<410:
# do something
elif wavelength<440:
# do something
elif wavelength<490:
# do something, and so on
如果波长>380且波长是,则有。若你们的波长在一个numpy数组中,你们可以用它来代替,若。。。elif…
条款
关于向量化操作的第二个问题。。。我想你想要这样的东西:
wavelengths = np.array([1,2,3])
conversion = np.array([-0.41,0,0.6]).reshape(3,1) # R, G, B Parts
wavelengths * conversion
# Reshape is needed to get a 3x3 result
array([[-0.41, -0.82, -1.23],
[ 0. , 0. , 0. ],
[ 0.6 , 1.2 , 1.8 ]])
给出的公式比这个例子要复杂一些,但是StackOverflow并不是为了编写代码。我认为通过这个例子,你应该能够实现这些公式 什么是波长?标量、列表、数组等?做些什么
做些什么来波长
?波长是一个数字。最简单的方法是将它们作为标量。将它们存储在其他结构中是否有助于避免使用这些if-else语句。这些“做某事”指的是链接中显示的计算,即找到给定波长的三个数字(r、g、b)。