Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python RuntimeWarning:电源中遇到无效值_Python_Numpy - Fatal编程技术网

Python RuntimeWarning:电源中遇到无效值

Python RuntimeWarning:电源中遇到无效值,python,numpy,Python,Numpy,这是我正在编写的代码的一部分。看最后一行 def xyz2srgb(xyz): """Convert from XYZ colorspace to sRGB""" xyz = xyz.T srgb = N.zeros_like(xyz) srgb[0] = 3.241*xyz[0] - 1.5374*xyz[1] - 0.4986*xyz[2] srgb[1] = -0.9692*xyz[0] + 1.876*xyz[1] + 0.0416*xyz[2]

这是我正在编写的代码的一部分。看最后一行

def xyz2srgb(xyz):
    """Convert from XYZ colorspace to sRGB"""
    xyz = xyz.T
    srgb = N.zeros_like(xyz)
    srgb[0] = 3.241*xyz[0] - 1.5374*xyz[1] - 0.4986*xyz[2]
    srgb[1] = -0.9692*xyz[0] + 1.876*xyz[1] + 0.0416*xyz[2]
    srgb[2] = 0.0556*xyz[0] - 0.204*xyz[1] + 1.057*xyz[2]

    srgb /= float(srgb.max())

    a = 0.055
    srgb = N.where(srgb <= 0.0031308,
                12.92*srgb,
                (1+a)*srgb**(1/2.4)-a)
这是射程限制吗?我在上面发现了一条类似的线:


有线索吗?谢谢。

您应该打印出
srgb
的值。可能这不是范围误差,而是这里的负系数

srgb[0] = 3.241*xyz[0] - 1.5374*xyz[1] - 0.4986*xyz[2]
srgb[1] = -0.9692*xyz[0] + 1.876*xyz[1] + 0.0416*xyz[2]
srgb[2] = 0.0556*xyz[0] - 0.204*xyz[1] + 1.057*xyz[2]
使
srgb
的元素完全可能为负数,并且除非您已经在使用复数,否则在您使用电源时会发出警告:

>>> import numpy
>>> numpy.array([-2.0])
array([-2.])
>>> numpy.array([-2.0])**(1/2.4)
__main__:1: RuntimeWarning: invalid value encountered in power
array([ nan])
>>> numpy.array([-2.0+0j])**(1/2.4)
array([ 0.34548198+1.28935629j])

where
的参数将在传递之前进行评估,因此在
srgb上的分支之前将获取幂函数。您应该打印出
srgb
的值。可能这不是范围误差,而是这里的负系数

srgb[0] = 3.241*xyz[0] - 1.5374*xyz[1] - 0.4986*xyz[2]
srgb[1] = -0.9692*xyz[0] + 1.876*xyz[1] + 0.0416*xyz[2]
srgb[2] = 0.0556*xyz[0] - 0.204*xyz[1] + 1.057*xyz[2]
使
srgb
的元素完全可能为负数,并且除非您已经在使用复数,否则在您使用电源时会发出警告:

>>> import numpy
>>> numpy.array([-2.0])
array([-2.])
>>> numpy.array([-2.0])**(1/2.4)
__main__:1: RuntimeWarning: invalid value encountered in power
array([ nan])
>>> numpy.array([-2.0+0j])**(1/2.4)
array([ 0.34548198+1.28935629j])

where
的参数将在传递之前进行计算,因此幂将在
srgb上的分支之前获取。对于这些错误,您可以在指数中使用浮点。例如:

>>> test = np.linspace(0,10,1000);)

>>> expos = 2*np.power(test,**6.**)+2*np.power(test,**4.**)

最好的问候

对于这些错误,您可以使用指数中的浮点。例如:

>>> test = np.linspace(0,10,1000);)

>>> expos = 2*np.power(test,**6.**)+2*np.power(test,**4.**)
致意