小编cac*_*moi的帖子

如何调用数组的元素作为其索引数值

我有一个由不同长度的字符串组成的@ORF数组.我想摆脱少于50个字符的字符串,所以我编写了以下foreach循环:

foreach (@ORF) {   
    if (length ($_) <= 50) {
            splice @ORF, ;
}
Run Code Online (Sandbox Code Playgroud)

我想知道拼接的第二个参数应该是什么,我已经用Google搜索了但我找不到将元素称为数值的方法.

arrays perl foreach splice

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

如何在字符串中找到重叠的正则表达式?

我有这个字符串:

my $line = "MZEFSRGGRMEAZFE*MQZEFFMAEZF*"
Run Code Online (Sandbox Code Playgroud)

我想找到每个子字符串开头M和结尾*,而不是*在它们之内.这意味着上面的字符串会给我最后一个数组中的4个元素.

@ORF= (MZEFSRGGRMEAZFE*,MEAZFE*, MQZEFFMAEZF*,MAEZF*)
Run Code Online (Sandbox Code Playgroud)

一个简单的正则表达式不会做,因为它找不到重叠的子串.有一个简单的方法吗?

regex arrays string perl

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

在使用solveset()中的erf()函数时,sympy和mpmath给出"TypeError:无法创建mpf"

我有4个输入变量(浮点数):

  • XMAX
  • XMIN
  • 百分比
  • 模式

我想为s解决以下(相当长的)等式:

> (1/2+1/2*erf((log(Xmax)-(log(mode)+s**2))/(sqrt(2)*s))-(1/2+1/2*erf((log(Xmin)-(log(mode)+s**2))/(sqrt(2)*s))) - percentage == 0
Run Code Online (Sandbox Code Playgroud)

我想用mpmath和sympy来解决这个等式,但它给了我以下错误信息:

TypeError:无法从0.707106781186547*( - s**2 - 0.287682072451781)/ s创建mpf

我的代码如下:

from mpmath import erf, log, sqrt
from sympy import Symbol, solveset, S

percentage = 0.95
mode = 2
Xmin = 1.
Xmax = 1.5
s = Symbol('s')

eqn = (1/2+1/2*erf((log(Xmax)-(log(mode)+s**2))/(sqrt(2)*s))-(1/2+1/2*erf((log(Xmin)-(log(mode)+s**2))/(sqrt(2)*s))) - percentage)

solveset(eqn, s, domain=S.Reals)
Run Code Online (Sandbox Code Playgroud)

mpf是mpmath创建的float类型.

我想我把问题缩小到erf()函数,它返回

EmptySet()
Run Code Online (Sandbox Code Playgroud)

当我跑

solveset(log(Xmax) - (log(mode) + s ** 2), s, domain=S.Reals)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚下一步该尝试什么,任何帮助将不胜感激!

我最初认为这是数学问题,但是方程式在matlab中成功解决,所以问题可能来自于sympy或者mpmath.

python sympy mpmath

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

标签 统计

arrays ×2

perl ×2

foreach ×1

mpmath ×1

python ×1

regex ×1

splice ×1

string ×1

sympy ×1