标签: numeric

Matlab 日志与 Numpy np.log 不匹配

在将旧的 Matlab 代码重写为 NumPy 时,我注意到对数计算方面的差异。在 NumPy 中,我使用np.log,Matlab 使用log函数。

b = [1 1 2 3 5 1 1];
p = b ./ sum(b);
sprintf('log(%.20f) = %.20f', p(5), log(p(5)))
Run Code Online (Sandbox Code Playgroud)
import numpy as np
b = np.array([1, 1, 2, 3, 5, 1, 1])
p = b.astype('float64') / np.sum(b)
print(f'log({p[4]:.20f}) = {np.log(p[4]):.20f}')
Run Code Online (Sandbox Code Playgroud)

对于配备 M1 芯片的 MacBook Pro 2020,我发现小数点后第 16 位不匹配。

log(0.35714285714285715079) = -1.02961941718115834732  # Matlab
log(0.35714285714285715079) = -1.02961941718115812527  # NumPy
Run Code Online (Sandbox Code Playgroud)

我想得到完全相同的结果。知道如何修改我的 Python 代码吗?

precision matlab numpy logarithm numeric

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

关于Python的混合数值数据类型将结果转换为最复杂的操作数

一点背景:我正在通过O'Reilly的"学习Python"一书学习Python,我有一些Java经验.

无论如何,在阅读第5章(实际上我还在其中)时,我遇到了一个问题,即Python处理混合数字表达式的结果.在该书中,他们使用混合的整数的例子,并且一个浮点数(40 + 3.14),并继续解释说,这个表达式的结果将是一个浮点数因为Python转换操作数到的类型最复杂的操作数.

我的问题是:代替程序员必须记住哪个数字操作数最高并且记住结果将"升级"到该格式,为结果类型创建特殊的数字文字会不会更简单?

我的逻辑是这样的:如果你的表达式中有一个小数位,你知道它将是一个浮点数,如果你有3 + 4j这样的东西,你知道它将是一个复数.为什么你必须记住数字文字的层次结构只是为了知道你的结果将被视为什么?在我看来,将结果分配给单个不知情的Literal似乎是一个更简单的过程,要知道无论表达式是否具有Mixed Numerics,它都将被视为特定的数据类型.

跟进问题:是否存在目前正在进行此类事情的语言?

同样,我对Python的了解有限,所以这可能是一个愚蠢的问题,但我想知道为什么程序员必须完成这个过程.我可以想象没有某种类型的系统已经存在的唯一原因是,结果的特定数字类型可能不像其他语言(Java)那样重要.

python numeric

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

查找PHP字符串中的数字字符

很抱歉问这个简单的问题,但我似乎没有找到任何答案.

如何检查字符串中是否有数字?

我试过了:

    $string = "this is a simple string with a number 2432344";
    if (preg_match('/[^0-9]/', "$string")) {
        echo "yes a number";
    } else {
        echo "no number";
    }
Run Code Online (Sandbox Code Playgroud)

似乎不起作用......

php numeric preg-match

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

Perl:排序<=>不工作

我不确定为什么这个Perl排序不起作用.请建议如何解决此问题.

while (<>) {

    chomp;
    if (/VIOLATE/) {

        @lines = split " ", $_;
        #print "$lines[-2]\n";  ## Print last but one column
        my @viol = "$lines[-2]\n";

        @sorted = sort {$a <=> $b} @viol;
        print "@sorted";
    }
};
Run Code Online (Sandbox Code Playgroud)

命令: perl test.pl test.log

test.log:

0.98           2.04          -1.106  VIOLATE
0.98           2.04          3.06
0.98           2.04          -11.06  VIOLATE
0.98           2.04          -1.06  VIOLATE
0.98           2.04          1.06 
0.98           2.04          -0.226  VIOLATE
0.98           2.04          -2.06  VIOLATE
Run Code Online (Sandbox Code Playgroud)

sorting perl numeric

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

如何防止MySQL数值发生变化?(phpMyAdmin的)

我在phpMyAdmin上创建了MySQL中的表INVOICES.

CREATE TABLE INVOICES(
 INVOICENUMBER       NUMERIC(3) NOT NULL PRIMARY KEY,
 JOBID               NUMERIC(3) NOT NULL,
 CURRENTDATE         DATE,
 CHARGEDETAILS       VARCHAR(200),
 CHARGESUBTOTAL      NUMERIC(3,2) NOT NULL CHECK (CHARGESUBTOTAL >= 0),
 GRANDTOTAL          NUMERIC(3,2) NOT NULL CHECK (GRANDTOTAL >= 0),
 FINALWORKLOG        VARCHAR(200),
 TERMS               VARCHAR(200),
 INDEX (JOBID)
 );
Run Code Online (Sandbox Code Playgroud)

但是,我在尝试向表中添加记录时遇到了问题.第一个插入命令正确输入所有内容,但第二个命令将数值(CHARGESUBTOTAL和GRANDTOTAL)转换为表中的9.99.我不确定是什么导致了它,所以有人可以帮助我吗?

INSERT INTO INVOICES VALUES (1,1,'2014-11-15','None as the job was cancelled.',0.00,0.00,'The job was cancelled.','None.');
INSERT INTO INVOICES VALUES (2,2,'2014-11-15','£31.80 for total work.',31.80,35.00,'Employee took care of all the expected duties.','Payment should be undertaken within 7 days of receipt.');
Run Code Online (Sandbox Code Playgroud)

php mysql numeric phpmyadmin

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

Linux按数值排序文件夹

我们有一个数据集

ls -1 /opt/test/kortinfo/
1.0.0
1.0.1
1.0.2
1.1.0
1.10.0            // Error
1.2.0
1.3.0
1.4.0
1.5.0
1.5.1
1.5.2
1.6.0
1.7.0
1.8.0
1.8.1
1.9.0
Run Code Online (Sandbox Code Playgroud)

正如我们在这里看到的那样,文件夹1.10.0放错位置,因为它大于1.9.0

我们试图把它管道sort -g,sort -nsort -ng但也不会正确地显示由它们的数量值排序的文件夹.

ls -1 /opt/test/kortinfo/ | grep -v "siste" | sort -ng
1.0.0
1.0.1
1.0.2
1.1.0
1.10.0            // Still the same error
1.2.0
1.3.0
1.4.0
1.5.0
1.5.1
1.5.2
1.6.0
1.7.0
1.8.0
1.8.1
1.9.0
Run Code Online (Sandbox Code Playgroud)

有谁知道如何通过数值正确排序这些?

linux sorting bash grep numeric

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

有效批处理文件变量名称?

我有批处理文件的以下问题.我简化了下面的问题.

运行以下批处理文件foo.bat将返回word标准输出(在本例中为命令提示符窗口),而不是hey.

foo.bat

@SET 1word="hey"
@ECHO %1word%
Run Code Online (Sandbox Code Playgroud)

但是,echo %1word%从命令行执行返回hey.

这应该/可能是这样的原因吗?是否不允许数字为环境变量名称添加前缀?

variables numbers file numeric batch-file

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

BigInteger.Pow()和Math.Pow()之间有什么区别?

我发现以下执行这些代码片段有点令人困惑:

BigInteger result = BigInteger.Pow(1000, 1000);
Run Code Online (Sandbox Code Playgroud)

这将编译没有错误但是这个不会:

BigInteger result = (BigInteger)Math.Pow(1000, 1000);
Run Code Online (Sandbox Code Playgroud)

执行BigInteger.Pow()和之间的区别是什么Math.Pow().在这两种情况下我们都是using System.Numerics.

第二个抛出OverflowException BigInteger不能表示无穷大.

c# numeric

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

使用dplyr管道命令进行数值计算

是否可以使用dplyr包中的管道进行数值计算?一个简单的例子是:

    0.15 %>% 3.8416 * (.*(1-.))/(0.03^2)  #does not work
    seq(1,10,1) %>% log(.) %>% .^2        #works
Run Code Online (Sandbox Code Playgroud)

想要了解管道如何工作以及什么时候能够和不能使用.我真的很喜欢使用管道功能,并希望找到一种方法将它用于这些类型的数值计算.

非常感谢

r numeric piping dplyr

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

如何将字符串中的整数相加?Java的

我一直在寻找一种在字符串中添加整数的方法,并找到了一些不同的回答说:

String line = "123456789";
int total = 0;
for (int i = 0;i<line.length();i++) {
    total += Character.getNumericValue(line.charAt(i));
}
Run Code Online (Sandbox Code Playgroud)

有没有更短的方法这样做,而不是循环通过字符串,它只会将每个字符的数值加起来?

java numeric

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

标签 统计

numeric ×10

php ×2

sorting ×2

bash ×1

batch-file ×1

c# ×1

dplyr ×1

file ×1

grep ×1

java ×1

linux ×1

logarithm ×1

matlab ×1

mysql ×1

numbers ×1

numpy ×1

perl ×1

phpmyadmin ×1

piping ×1

precision ×1

preg-match ×1

python ×1

r ×1

variables ×1