小编use*_*489的帖子

在循环中创建变量并在 Python 中初始化它们

我有 10 个参数需要初始化。按照约定,它们被命名为 a_true、b_true 等。它们不是列表或数组,而是独立变量。它们需要从长度为 1X10 的数组进行初始化。

我打算做这样的事情,我知道它有其缺点:

param=[34,65,...,234] # Contains initialization values
var=['a','b','c','d','e','f','g','h','i','j']
gvalues=[] # Array intended to contain variable names
k=0
for i in var:
    gvalues.append(var[k]+'_true')
    k+=1
Run Code Online (Sandbox Code Playgroud)

这会创建一个元素数组,如 a_true、b_true 等。我想将它们作为变量而不是数组的元素,最后使用 param 中的值初始化它们。有什么可能性吗?如果这看起来微不足道,新手很抱歉。

预期输出:

[a_true, b_true, ..., j_true]=[34, 65, ... , 234]
Run Code Online (Sandbox Code Playgroud)

python arrays loops

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

衍生品在python中爆炸

我试图找到数据集(x,y)的高阶导数.x和y是长度为N的1D阵列.

假设我将它们生成为:

xder0=np.linspace(0,10,1000)
yder0=np.sin(xder0)
Run Code Online (Sandbox Code Playgroud)

我定义了导数函数,其中包含2个数组(x,y)并返回(x1,y1),其中y1是在每个索引处计算的导数:(y [i + 1] -y [i])/(x [ I + 1] -x [I]).x1只是x [i + 1]和x [i]的平均值

这是执行它的功能:

def deriv(x,y):
    delx =np.zeros((len(x)-1), dtype=np.longdouble)
    ydiff=np.zeros((len(x)-1), dtype=np.longdouble)
    for i in range(len(x)-1):
            delx[i]  =(x[i+1]+x[i])/2.0
            ydiff[i] =(y[i+1]-y[i])/(x[i+1]-x[i])
    return delx, ydiff
Run Code Online (Sandbox Code Playgroud)

现在计算一阶导数,我将此函数称为:

xder1, yder1 = deriv(xder0, yder0)
Run Code Online (Sandbox Code Playgroud)

类似地对于二阶导数,我称这个函数给出一阶导数作为输入:

xder2, yder2 = deriv(xder1, yder1)
Run Code Online (Sandbox Code Playgroud)

它继续:

xder3, yder3 = deriv(xder2, yder2)
xder4, yder4 = deriv(xder3, yder3)
xder5, yder5 = deriv(xder4, yder4)
xder6, yder6 = deriv(xder5, yder5)
xder7, yder7 = deriv(xder6, yder6)
xder8, yder8 = …
Run Code Online (Sandbox Code Playgroud)

python numpy numerical-methods derivative

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

在C中释放双指针

我有两个函数来创建数组.

double *Array1D (int nx, int dsize) {
  double *v;
  v = calloc(nx, dsize);
  return v;
}

double **Array2D (int ny, int nx, int dsize) {
  double **v; int j;
  for (j = 0; j < ny; j++)
    v[j] = Array1D(nx, dsize);
  return v;
}

int i, j;
pn = Array2D (ny, nx, sizeof(double));
for (j = 0; j < ny; j++)
  for (i = 0; i < nx; i++)
    pn[j][i] = 1.0 + (i + j * nx) * …
Run Code Online (Sandbox Code Playgroud)

c arrays free pointers double-pointer

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