相关疑难解决方法(0)

scipy.optimize中的LinearConstraint

我想使用scipy.optimize最小化大量线性不等式上的函数(最终是非线性的)。作为热身,我正在尝试在框0 <= x <= 1、0 <= y <= 1的情况下最小化x + y。按照以下Johnny Drama的建议,我目前正在使用dict-comprehesion生成不等式的字典,但没有得到预期的答案(最小值= 0,最小值为(0,0))。

新的代码部分(当前相关):

import numpy as np
from scipy.optimize import minimize



#Create initial point.

x0=[.1,.1]

#Create function to be minimized

def obj(x):
    return x[0]+x[1]


#Create linear constraints  lbnd<= A*(x,y)^T<= upbnd

A=np.array([[1,0],[0,1]])

b1=np.array([0,0])

b2=np.array([1,1])

cons=[{"type": "ineq", "fun": lambda x: np.matmul(A[i, :],x) -b1[i]} for i in range(A.shape[0])]

cons2=[{"type": "ineq", "fun": lambda x: b2[i]-np.matmul(A[i, :], x) } for i in range(A.shape[0])]

cons.extend(cons2)

sol=minimize(obj,x0,constraints=cons)

print(sol)
Run Code Online (Sandbox Code Playgroud)

问题的原始版本:

我想在scipy.optimize中使用LinearConstraint对象,如此处的教程中所述:“定义线性约束”

我试图做一个简单的例子,答案很明显:在平方0 <= x <= 1,0 …

python scipy

5
推荐指数
1
解决办法
3863
查看次数

Shiny - 使用 for 循环插入 UI 在每个输出中返回相同的元素

我想在我的 Shiny 应用程序中插入非预定义数量的图表。我使用了一个for循环和一系列的insertUI。

问题是当我运行它时,文本元素的行为符合预期,但图表都呈现相同的图像。我怎样才能防止这种情况发生?

这是一个代表:

library(shiny)

ui <- fluidPage(
  tags$div(
    class = "this", 
    actionButton("go", "go")
  )
)

server <- function(input, output, session) {

  observeEvent( input$go , {

    x <- reactiveValues(x = list(iris, mtcars, airquality))

    for (i in 1:3){
      insertUI(
        ".this", 
        ui =  tagList(
          p(paste("Number", i)),
          renderPlot({
            plot(x$x[[i]])
          })
        ))
    }
  })

}

shinyApp(ui, server)

Run Code Online (Sandbox Code Playgroud)

欣欣

r shiny

5
推荐指数
2
解决办法
1229
查看次数

试图理解Python memoization代码片段

在最近的Hacker Newsletter问题中,这篇关于Python中装饰器的非常有用的文章已被链接.我喜欢这篇文章,我想我理解了大多数装饰器的例子.但是,在非装饰器的memoization示例中,我对代码非常困惑:

def memoize(fn):
    stored_results = {}

    def memoized(*args):
        try:
            # try to get the cached result
            return stored_results[args]
        except KeyError:
            # nothing was cached for those args. let's fix that.
            result = stored_results[args] = fn(*args)
            return result

    return memoized
Run Code Online (Sandbox Code Playgroud)

我很困惑这个函数如何创建一个stored_results附加到的持久字典.重新阅读后,将其复制/粘贴到我的编辑器中并使用它,并在网上寻求帮助,我仍然不明白语法stored_results[args] = fn(*args)是做什么的.

(1)文章建议上面的代码将返回函数,但现在它将在执行新的参数之前首先搜索字典.这是怎么发生的?为什么不stored_results只是当地人memoizememoized返回时为什么不被销毁?

(2)解释通过这里的论点的其他问题或网络资源的链接*args也会有所帮助.如果*args是参数列表,为什么我们可以使用语法 stored_results[args],通常在尝试索引列表中的字典时会出现不可出错的错误?

感谢任何澄清的想法.

python function memoization

4
推荐指数
1
解决办法
347
查看次数

你如何创建一个 lambdas 的 python 列表理解?

我正在尝试使用列表理解为延迟执行创建一个 lambda 列表。下面是一个简单的例子。

def func_a(message: str) -> None:
    print('a: ' + message)
    
def func_b(message: str) -> None:
    print('b: ' + message)

msg = 'some message'
funcs = [func_a, func_b]
funcs_w_args = [lambda : func(msg) for func in funcs]

for func in funcs_w_args:
    func()
Run Code Online (Sandbox Code Playgroud)

结果是

b: some message
b: some message
Run Code Online (Sandbox Code Playgroud)

而想要的结果应该是

a: some message
b: some message
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

python lambda list-comprehension deferred-execution

4
推荐指数
1
解决办法
102
查看次数

lambda推送到列表然后调用 - 输出不是预期的

所有:

def a(p): 
    return p+1 

def gen(func, k=100): 
    l= [] 
    for x in range(k): 
       temp = ("%s_with_parameter_%s" %(func.__name__, x), lambda: func(x)) 
       # maybe this will be more clear to explain my quetion: 
       # i want to get list/dict which can bind self-defined string and function together 
       l.append(temp) 
    return l 

l = gen(a, 100) 

for x in range(len(l)): 
   l[x][1]()                

100
100
100
100
100
100
100
100
Run Code Online (Sandbox Code Playgroud)

...我想输出将是1 to 101打印输出,但它显示了一个100列表.

我可以在这里获得这个片段的帮助吗?

谢谢!

python lambda

3
推荐指数
1
解决办法
272
查看次数

使用局部变量的 for 循环中的函数定义

我在这里不知所措。我正在尝试在 for 循环内定义一个函数。该函数使用循环内定义的变量,看起来类似:

myFuns = []
for i in range(10):
    j = i + 4
    def fun(): print(j)
    myFuns += [fun]
Run Code Online (Sandbox Code Playgroud)

在此循环结束时,myFuns 中的函数有所不同,但它们执行相同的操作,显然,这不是传递给 fun() 的新变量 j,而是 j 的引用。

我很高兴知道如何传递 j 的值而不仅仅是引用。

我不知道在循环中创建的变量可能比循环寿命更长,所以这对我来说是一个新领域......

python

3
推荐指数
1
解决办法
4362
查看次数

Python中的闭包和循环

可能重复:
Python中的词法闭包

假设我有以下代码

callbacks = []
for i in range(10):
  callbacks.append(lambda x: i)
Run Code Online (Sandbox Code Playgroud)

所有函数都callbacks将返回最终值i.如何创建在创建时返回i当前值的回调?

python closures

2
推荐指数
1
解决办法
393
查看次数

线程内的 print() 输出错误值

我正在尝试重新创建一个称为睡眠排序的愚蠢想法,但是输出远非预期。

我期待

0
1
2
3
5
Run Code Online (Sandbox Code Playgroud)

但是我得到

0
5
5
5
5
Run Code Online (Sandbox Code Playgroud)

...这很奇怪,因为线程确实:休眠(项目)秒,然后打印该项目。

这是我的代码

0
1
2
3
5
Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?非常感谢您提前!

python sorting multithreading

1
推荐指数
1
解决办法
60
查看次数

我可以在多行的python中编写lambda函数,并调用其他函数吗?

我正在阅读计算机程序的结构和解释 - 在计算机科学领域很有名.

受到函数式编程的鼓励,我尝试用Python而不是Scheme编写代码,因为我发现它更容易使用.但接下来的问题是:我需要多次使用Lambda函数,但我无法弄清楚如何使用lambda复杂的操作来编写一个未命名的函数.

在这里,我想编写一个lambda函数,其中一个字符串变量exp作为唯一的参数并执行exec(exp).但我得到一个错误:

>>> t = lambda exp : exec(exp)
File "<stdin>", line 1
t = lambda exp : exec(exp)
                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

怎么会发生?如何应对呢?

我阅读了我的Python指南,并在没有找到我想要的答案的情况下搜索了Google.这是否意味着lambdapython 中的函数只是设计为语法糖?

python

0
推荐指数
1
解决办法
1097
查看次数