小编ant*_*ony的帖子

Matlab相当于Numpy广播?

我试图找到一些方法从Matlab中的3*(一个大数字)矩阵的每一列中减去一个3号向量.当然我可以使用一个循环,但我试图找到一些更有效的解决方案,有点像numpy广播.哦,我不能使用repmat,因为我没有足够的内存来使用它(因为它创建了另一个3*(一个大数字)矩阵)...

这可能吗?

python matlab numpy numpy-broadcasting

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

使用matplotlib的离散值的直方图

我有时需要使用matplotlib对离散值进行直方图.在这种情况下,分箱的选择可能是至关重要的:如果您使用10个箱子直方图[0,1,2,3,4,5,6,7,8,9,10],其中一个箱子将有两次和其他人一样多.换句话说,binsize通常应该是离散化大小的倍数.

虽然这个简单的情况本身相对容易处理,但有没有人有一个指向库/函数的指针,可以自动处理这个,包括在浮点数据的情况下,由于FP的离散化大小可能会略有变化四舍五入?

谢谢.

numpy matplotlib

18
推荐指数
3
解决办法
2万
查看次数

具有const参数的函数指针是否可以用作具有nonconst参数的函数指针?

也许标题本身并不清楚......我有一个函数f(由某些库提供),它将一个参数作为签名的函数指针void g(int*),即

void f(void (*g)(int*));
Run Code Online (Sandbox Code Playgroud)

但是,我想使用g带有签名的函数(我定义的)来使用它void g(const int*).先验的,我看不出如何能违反任何常量,正确性,因为所有的签名f说的是,g将只与一个(非叫const)int*(非const),而事实上我可以调用一个void (const int*)函数用不const int*论证.

但海湾合作委员会抱怨并说,

expected 'void (*)(int *)', but argument is of type 'void (*)(const int *)'
Run Code Online (Sandbox Code Playgroud)

我看不出这个投诉是如何合法的,所以有人知道我对此的理解是否错误,或者是否有办法解决?

c const function-pointers

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

argparse接受一切

有没有办法argparse.ArgumentParser在读取未知选项时不引发异常,而是将所有未知选项的值放在字典中,而将那些没有值放在列表中?

例如,假设解析器中没有定义参数prog.py,我传递了两个参数:

./prog.py --foo bar --baz
Run Code Online (Sandbox Code Playgroud)

我想要以下内容:

parsed = parser.parse_args()
vals = parsed.unknown_with_vals
novals = parsed.unknown_without_vals

print(vals)
#{'foo' : 'bar'}
print(novals)
#['baz']
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

python argparse

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

vector :: operator []开销

显然,在分析了我的(科学计算)C++代码之后,25%(!)的时间用于调用vector::operator[].是的,我的代码花费了所有的时间来读取和写入vector<float>s(以及一些vector<int>s),但是,我仍然想知道operator[]与C风格的数组相比是否应该有一些显着的开销?

(我已经看到了关于SO的另一个相关问题,但关于[]vs at()- 但显然[]对我来说太慢了?!)

谢谢,安东尼

(编辑:仅供参考:在Ubuntu上使用g ++ -O3版本4.5.2)

c++ stl vector

12
推荐指数
4
解决办法
2699
查看次数

python数据和非数据描述符

根据Python的文档,

带有__set__()__get__()定义的数据描述符总是覆盖实例字典中的重定义.

我理解这句话没有问题,但是有人可以为我澄清为什么会有这样的规则吗?毕竟,如果我想覆盖实例字典中的属性,我已经需要明确地执行(inst.__dict__["attr"] = val),因为天真inst.attr = val会调用描述符的__set__方法,这通常会覆盖实例字典中的属性.

编辑:为了说清楚,我理解发生了什么,我的问题是为什么这样的规则到位.

python descriptor python-descriptors

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

cython boundscheck = True比boundscheck = False快

请考虑以下最小示例:

#cython: language_level=3, boundscheck=False, wraparound=False, initializedcheck=False, cdivision=True
cimport cython
from libc.stdlib cimport malloc

def main(size_t ni, size_t nt, size_t nx):
    cdef:
        size_t i, j, t, x, y
        double[:, :, ::1] a = <double[:ni, :ni, :nx]>malloc(ni * ni * nx * sizeof(double))
        double[:, :, ::1] b = <double[:nt, :ni, :nx]>malloc(nt * ni * nx * sizeof(double))
        size_t[:, :, ::1] best = <size_t[:nt, :ni, :nx]>malloc(nt * ni * nx * sizeof(size_t))
        size_t mxi
        double s, mxs
    for t in range(nt):
        for j …
Run Code Online (Sandbox Code Playgroud)

cython auto-vectorization

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

如何使用常量额外输入参数应用cellfun(或arrayfun或structfun)?

我想将一个函数应用于单元格数组的每个元素 - 所以我有cellfun这个.但是,该函数需要两个额外的参数(一个字符串和一个向量),我想为单元格数组的所有元素保持不变; 即我想做的事情:

cellfun(@myfun, cellarray, const1, const2)
Run Code Online (Sandbox Code Playgroud)

含义:

for i = 1:numel(cellarray),
  myfun(cellarray{i}, const1, const2);
end
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,而不创建包含和的numel(cellarray)副本的中间单元格数组?const1const2

matlab arguments function cell-array

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

从emacs运行交互式python脚本

我是一个相当熟练的vim用户,但是我的朋友告诉我关于emacs的这么多好东西,我决定尝试一下 - 特别是在找到适当命名的邪恶模式之后......

无论如何,我目前正在开发一个需要用户输入的python脚本(cmd.Cmd的子类).在vim中,如果我想尝试它,我可以简单地做:!python %,然后可以与我的脚本交互,直到它退出.在emacs中,我试过M-! python script.py,它确实会在一个单独的缓冲区中运行脚本,但是RETURN似乎不会被发送回脚本,而是被emacs缓冲区捕获.我也试着看一下python-mode的C-c C-c,但这会在一些临时目录中运行脚本,而我只想运行它(pwd).

那么,有没有任何规范的方法呢?

python emacs

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

py.test运行Python2和Python3

我编写了一个与Python2和Python3一起运行的包(http://github.com/anntzer/parsedcmd).但是,我不得不写Python2和Python3分开(py.test)单元测试(主要是因为我想测试Python3额外的功能,特别是仅关键字参数),所以我有一个test_py2.pytest_py3.py一个test子包.现在,如果我跑,比方说py.test2 mypkg,test_py2传球,但test_py3失败了SyntaxError.同样地,对于py.test3 mypkg,test_py3传递但test_py2失败(我可以使这个工作,但这只是一个StringIO移动的问题io).

我可以设计test子包,以便import mypkg.test只导入正确版本的测试,但显然py.test并不关心 - 它只是看到两个文件匹配test_*并抓取它们中的所有测试,忽略了__init__.py告诉他导入的内容.

所以现在我需要做的两py.test2 mypkg/test/test_py2.pypy.test3 mypkg/test/test_py3.py.有没有一种方法来建立整个事情让py.test2 mypkgpy.test3 mypkg会"只是工作"?

谢谢.

python pytest python-3.x

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