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