gpt4 book ai didi

python - 在 Python 中将序列重新用作列表的一部分

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:28 25 4
gpt4 key购买 nike

我有一个列表(实际上我想让它成为一个 1D numpy 数组),它的第一个和最后一个元素将保持不变,但它的其他元素是优化的对象,即经常改变并且需要在一个单独的变量(因为 scipy.optimize.leastsq() 需要那样)。所以我有这段代码将常量“外部”元素与变化的元素放在一起:

b_0 = 1      # this will stay constant
b_n = 10 # this as well

def _b(b_0, b_n, b_in):
import numpy as np
b = np.zeros((b_inner.shape[0]+2))
b[0] = b_0
b[-1] = b_n
b[1:-1] = b_in
return(b)

>>> b_in = range(2,10)
>>> _b(b_0, b_n, b_in) #returns array([1,2,3,4,5,6,7,8,9,10])

这对我来说看起来很不优雅,我相信一定有一种方法可以在定义的一行中做到这一点

b = np.array([b_0, somefunction(b_in), b_n])

作为背景,我需要这个,因为我有一个 leastsq 的错误函数,它采用一维数组,其中只有内部元素被优化。我将上面的结果提供给 lambda 函数,连同其他参数提供给错误函数,这样我就可以只将更改为 leastsq 的内容传递给 leastsq:

err_func = lambda b_in: error_function(_b(b_0,b_n,b_in), other_parameters)

b_in_0 = range(2,10) # starting guess
target = scipy.optimize.leastsq(err_func, b_in_0)

因为我对不同类型的优化使用相同的误差函数(该函数可以适应不同的方面和不同类型的约束),我不想为特定目的重写误差函数.

最佳答案

我认为np.r_可能是你要找的。您可以使用 np.r_[b_0, somefunction(b_in), b_n],例如:

np.r_[12, np.arange(5), 13]
# array([12, 0, 1, 2, 3, 4, 5, 13])

关于python - 在 Python 中将序列重新用作列表的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com