Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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中函数达到其最小负值的返回值_Python - Fatal编程技术网

在python中函数达到其最小负值的返回值

在python中函数达到其最小负值的返回值,python,Python,已经很晚了,所以我不知道这会有多清楚 我有一个函数f(x),我想从一个列表中得到x的值,其中f(x)达到最小的负值,即: x = [0, 2, 4, 6] f(x) = [200, 0, -3, -1000] 在本例中,我希望返回x中的值4,这给了我-3。我不想要绝对最小值(-1000),而是绝对值最低的负值 我希望这是有道理的,非常感谢你的帮助 更新 我试图简化这个问题,可能太多了。事情是这样的:我有一个组成多边形的2D点列表,我想顺时针排列它们 为此,我取每个点和其他点之间的叉积,然后根据

已经很晚了,所以我不知道这会有多清楚

我有一个函数f(x),我想从一个列表中得到x的值,其中f(x)达到最小的负值,即:

x = [0, 2, 4, 6]
f(x) = [200, 0, -3, -1000]
在本例中,我希望返回x中的值4,这给了我-3。我不想要绝对最小值(-1000),而是绝对值最低的负值

我希望这是有道理的,非常感谢你的帮助

更新

我试图简化这个问题,可能太多了。事情是这样的:我有一个组成多边形的2D点列表,我想顺时针排列它们

为此,我取每个点和其他点之间的叉积,然后根据从上一点得到的负叉积(它告诉我旋转的感觉)选择下一个点,该叉积具有最小的绝对值(它告诉我它确实是下一个点)

那么说:

x = [(1,1), (-1,-1), (-1,1), (1,-1)]
我想得到

x = [(1,1), (1,-1), (-1,-1), (-1,1)]
我在做什么

for point in x:
   cp = [numpy.cross(point, p) for p in x]
   # and then some magic to select the right point...
再次感谢您的帮助。

试试这个:

inputs = [0, 2, 4, 6]
outputs = [200, 0, -3, -1000]
max = min(outputs)
for n in outputs:
    if n >= 0:
        continue
    if n > max:
        max = n
print inputs[outputs.index(max)]
试试这个:

inputs = [0, 2, 4, 6]
outputs = [200, 0, -3, -1000]
max = min(outputs)
for n in outputs:
    if n >= 0:
        continue
    if n > max:
        max = n
print inputs[outputs.index(max)]
a=[0,2,4,6]
b=[200,0,-3,-1000]
值=最大值([x表示b中的x,如果x<0])
打印a[b.索引(值)]
a=[0,2,4,6]
b=[200,0,-3,-1000]
值=最大值([x表示b中的x,如果x<0])
打印a[b.索引(值)]

在大多数情况下,以下解决方案应能正常工作

    [ z for z in x if f(z) == max( f(y) for y in x if f(y) < 0 ) ]
[z表示x中的z,如果f(z)=max(f(y)表示x中的y,如果f(y)<0]

此解决方案的一个特点是,如果存在重复,即多个
x
产生相同的最大负片,则所有负片都将返回。

以下解决方案在大多数情况下应能正常工作

    [ z for z in x if f(z) == max( f(y) for y in x if f(y) < 0 ) ]
x = [0, 2, 4, 6]
fx = [200, 0, -3, -1000]

print(x[fx.index(max(n for n in fx if n < 0))])
[z表示x中的z,如果f(z)=max(f(y)表示x中的y,如果f(y)<0]
此解决方案的一个特点是,如果存在重复,即多个
x
产生相同的最大负片,则所有负片都将返回。

x=[0,2,4,6]
x = [0, 2, 4, 6]
fx = [200, 0, -3, -1000]

print(x[fx.index(max(n for n in fx if n < 0))])
外汇=[200,0,-3,-1000] 打印(x[fx.索引(最大值(如果n<0,则n代表fx中的n)))
x=[0,2,4,6]
外汇=[200,0,-3,-1000]
打印(x[fx.索引(最大值(如果n<0,则n代表fx中的n)))

您尝试了什么,哪里卡住了?这称为最大负数。如果f(x)包含满足条件的重复数字,情况如何?您尝试了什么,哪里卡住了?这称为最大负数。如果f(x)包含满足条件的重复数字,情况如何?