小编dmo*_*mon的帖子

numpy中的重要数字四舍五入

我试过搜索这个并没有找到满意的答案.

我想取一个列表/数组并将它们全部舍入到n个有效数字.我写了一个函数来做这个,但我想知道是否有一个标准的方法呢?我已经搜索但找不到它.例:

In:  [  0.0, -1.2366e22, 1.2544444e-15, 0.001222 ], n=2
Out: [ 0.00, -1.24e22,        1.25e-15,  1.22e-3 ]
Run Code Online (Sandbox Code Playgroud)

谢谢

python numpy

20
推荐指数
4
解决办法
2万
查看次数

为什么在C++中明确表示"内联"

可能重复:
我应该何时为函数/方法编写关键字'inline'?

所以这个问题已经困扰了我一段时间,我无法得到明确的答案.我的理解是,一个好的编译器通常会意识到什么时候对函数内联安全和有利,并且如果开启优化,它将内联所有这些函数,它们被明确地识别为内联函数.程序员与否.此外,编译器将识别何时对内联函数不安全/不敏感,并且在这种情况下将简单地忽略程序员对内联函数的请求.

因此,我想知道明确地将函数声明为内联的优点是什么?只要打开优化,编译器就会内联所有它认为合理的函数,并且只有那些函数.

我发现了一些关于嵌套h文件的内联保护以防止多个定义的讨论,但肯定#ifdefine的头文件源代码是更好的做法,并再次使用关键字inline void?

c++ optimization inline

14
推荐指数
2
解决办法
1379
查看次数

PDB.run - 重新启动pdb会话

我对python和pdb比较新,但我对gdb有很多经验.

我的问题是,如果我在某些时候在我的代码中设置了一些断点,我会想要改变一些东西并重新运行我的调试会话,保留这些断点.但是,在我的pdb会话中输入"run"会导致我的会话以以下输出终止

(Pdb) run
  Traceback (most recent call last):
  File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File "/usr/lib64/python2.6/pdb.py", line 1319, in <module>
    pdb.main()
  File "/usr/lib64/python2.6/pdb.py", line 1312, in main
    pdb.interaction(None, t)
  File "/usr/lib64/python2.6/pdb.py", line 198, in interaction
    self.cmdloop()
  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib64/python2.6/pdb.py", line 267, in onecmd
    return cmd.Cmd.onecmd(self, line)
  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
    return func(arg)
  File "/usr/lib64/python2.6/pdb.py", line …
Run Code Online (Sandbox Code Playgroud)

python pdb

10
推荐指数
2
解决办法
2224
查看次数

使用犰狳进行插值

因此,好像犰狳没有任何插值功能(至少我在文档中找不到对它的引用)。我想知道是否有人对如何最好地使用rowvec作为输入和输出来实现样条和线性插值有任何建议?

c++ interpolation armadillo

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

CMake的FIND_PACKAGE未设置变量

我目前正在尝试编写我的第一个非平凡的CMake项目,但是我无法检查FIND_PACKAGE()的任何输出,因为它似乎并未将值赋予我期望的全局变量!例如,以下代码:

MESSAGE("CMake version: ${CMAKE_VERSION}")
FIND_PACKAGE(Armadillo)
IF(Armadillo_FOUND)
    MESSAGE("Found Armadillo.")
    MESSAGE("Armadillo include dir is: ${ARMADILLO_INCLUDE_DIR}")
    MESSAGE("Armadillo lib's to be linked against: ${Armadillo_LIBRARIES}")
    MESSAGE("Armadillo lib version: ${PACKAGE_FIND_VERSION}")
ENDIF(Armadillo_FOUND)
Run Code Online (Sandbox Code Playgroud)

产生以下终端输出

/build]$ CMake version: 2.6.4
/build]$ Found Armadillo.
/build]$ Armadillo include dir is:
/build]$ Armadillo lib's to be linked against:
/build]$ Armadillo lib version:
Run Code Online (Sandbox Code Playgroud)

我知道这是很基本的,但是从所有教程中我都可以发现这应该产生有用的输出。有任何想法吗??

cmake

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

停止 python 在 AppData\Roaming\Python 中查找

根据需要,我的系统上有许多 python 3.4 发行版,其中一些安装在非用户可写的位置,一些我使用不同的编译器和 3rd 方库(例如 MKL)构建自己。

我需要能够可靠地隔离这些中的每一个以供使用,但不能使用 virtualenv / pyenv ...等。只要 windows 知道使用哪个可执行文件,隔离就相当好。然后我使用“pip -t”安装到我可以添加到 PYTHONPATH 的目录中。问题是,如果任何发行版使用 pip 的 --user 参数安装的软件包放置在单个共享位置,就会导致我出现问题。

我想知道是否有一种简单的方法可以告诉 python 在搜索包时不要查看 AppData\Roaming\Python... 目录。

python pip virtualenv

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

Fortran算术异常

这是一个简短的问题,但我试图尽可能详细地提供.

我正在编译一个旧的,但仍然积极开发的fortran代码(f77标准)在Scientific Linux上.这段代码的推荐编译器是ifort和gfortran.使用gfortran我可以编译并运行此代码.但是,如果我使用DEBUG = 1标志进行编码,则代码会编译,但会以SEG FAULT终止.单步执行gdb会导致以下错误来源:

REAL*4 TIME_CURRENT     
CALL CPU_TIME(TIME_CURRENT) 
ISECS = 100*INT(TIME_CURRENT)  
Run Code Online (Sandbox Code Playgroud)

该计划终止于:

Program received signal SIGFPE, Arithmetic exception. 
timer (init=1, isecs=0) at myprog.f:1818
1818 ISECS = 100*INT(TIME_CURRENT)
Run Code Online (Sandbox Code Playgroud)

如果我在第1818行停止执行并检查ISECS和TIME_CURRENT,我得到:

(gdb) ptype(TIME_CURRENT)
type = real(kind=4)
(gdb) ptype(ISECS)
type = integer(kind=4)
Run Code Online (Sandbox Code Playgroud)

我试过更具体和使用:

ISECS = 100*INT(TIME_CURRENT,4)
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.我没有看到这可能等同于算术错误?

我的(生成文件生成)调试编译标志是:

gfortran -fno-automatic -m32 -O0 -g \
         -ffpe-trap=invalid,zero,overflow,underflow,precision -static-libgfortran
Run Code Online (Sandbox Code Playgroud)

当我编译出调试时,我不再收到SEG FAULT但是我的编译标志是

gfortran -fno-automatic -m32 -O2 -ffast-math -static-libgfortran
Run Code Online (Sandbox Code Playgroud)

我不是一个强大的程序员,所以任何帮助将不胜感激.请注意,我正在64位系统上进行编译,但强制进行32位编译,因为这是必需的.

fortran gfortran

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