小编leo*_*on 的帖子

为什么numpy本身"慢"?

鉴于这里线程

似乎numpy不是超快速计算的最理想选择.有没有人知道在使用numpy进行数值计算时我们必须注意哪些开销?

python performance numpy scientific-computing

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

在Python中合并索引数组

假设我有两个numpy数组的形式

x = [[1,2]
     [2,4]
     [3,6]
     [4,NaN]
     [5,10]]

y = [[0,-5]
     [1,0]
     [2,5]
     [5,20]
     [6,25]]
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方式来合并它们,就像我一样

xmy = [[0, NaN, -5  ]
       [1, 2,    0  ]
       [2, 4,    5  ]
       [3, 6,    NaN]
       [4, NaN,  NaN]
       [5, 10,   20 ]
       [6, NaN,  25 ]
Run Code Online (Sandbox Code Playgroud)

我可以使用搜索来实现一个简单的函数来查找索引,但这对于许多数组和大尺寸而言并不优雅且可能效率低下.任何指针都很受欢迎.

python arrays numpy scipy

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

如何从djvu和其他电子书格式中提取文本(可能在Python中)

我有djvu,pdf,chm格式的电子书集合,我正在寻找一种在内容中搜索关键字的方法.我一直在研究并找到解析pdf内容的几个建议,但似乎没有办法将djvu中的内容转换为文本.有任何机会,有没有人知道将djvu内容解码为文本的方法,以便我可以轻松搜索?

谢谢

python pdf full-text-search djvu

5
推荐指数
2
解决办法
5538
查看次数

如何使用Python正则表达式匹配MATLAB的函数语法?

我试图在我们的内部库中找到所有MATLAB函数的所有输入/输出.我是新的(第一次)正则表达式,并一直试图在Python的re库中使用多行模式.

MATLAB函数语法如下:

function output = func_name(input)
Run Code Online (Sandbox Code Playgroud)

签名可以跨越多行.

我开始使用如下模式:

re.compile(r"^.*function (.*)=(.*)\([.\n]*\)$", re.M)
Run Code Online (Sandbox Code Playgroud)

但我一直得到一个不受支持的模板操作符错误.任何指针都很赞赏!

编辑:

我现在有:

pattern = re.compile(r"^\s*function (.*?)= [\w\n.]*?\(.*?\)", re.M|re.DOTALL)
Run Code Online (Sandbox Code Playgroud)

给出如下匹配的匹配:

        function [fcst, spread] = ...
                VolFcstMKT(R,...
                           mktVol,...
                           calibrate,...
                           spread_init,...
                           fcstdays,...
                           tsperyear)

        if(calibrate)
            if(nargin < 6)
                tsperyear = 252;
            end
            templen = length(R)
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么它会给出额外的线而不是在第一线停下来)

python regex matlab

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

Mono 编译器中的错误:库或多文件应用程序中的文件必须以命名空间或模块声明开头

我正在尝试在 ubuntu 上以单声道编译此示例

但是我得到了错误

wingsit@wingsit-laptop:~/MyFS/kitty$ fsc.exe -o kitty.exe  kittyAst.fs kittyParser.fs kittyLexer.fs main.fs 
Microsoft (R) F# 2.0 Compiler build 2.0.0.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

/home/wingsit/MyFS/kitty/kittyAst.fs(1,1): error FS0222: Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'

/home/wingsit/MyFS/kitty/kittyParser.fs(2,1): error FS0222: Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'

/home/wingsit/MyFS/kitty/kittyLexer.fsl(2,1): error FS0222: Files in libraries …
Run Code Online (Sandbox Code Playgroud)

mono f# compiler-errors

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

什么是编码嵌套二进制分支逻辑的可读方式

我有一些看起来像的逻辑

if(a){
 if(b){
  if(c){
    //do something
  }else{
    //do something
  }    
 }else{
  if(c){
    //do something
  }else{
    //do something
  }    
 }else{
 if(b){
  if(c){
    //do something
  }else{
    //do something
  }    
 }else{
  if(c){
    //do something
  }else{
    //do something
  }    
}
Run Code Online (Sandbox Code Playgroud)

将此实现为可读逻辑的最佳方法是什么?我不想做一些大的OOP手术让它可读,因为做的事情只是一个衬垫.感谢C/C++中的解决方案

c c++ boolean-logic

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

这个c/c ++循环可以优化多少?

我是优化的新手.我一直在阅读有关如何优化c ++代码的一些参考,但我很难将它应用于实际代码.因此,我只想收集一些关于如何从下面的循环中尽可能多地从CPU /内存中挤出汁液的真实世界优化技术

double sum = 0, *array;
array = (double*) malloc(T * sizeof(double));
for(int t = 0; t < T; ++t){
sum += fun(a,b,c,d,e,f,sum);
*(array+t) = sum;
}
Run Code Online (Sandbox Code Playgroud)

这里a,b,c,d,e,fdoubleTint.任何包括但不限于内存对齐,并行性,openmp/MPI和SSE指令的内容都是受欢迎的.编译器是标准的gcc,microsoft或常用的编译器.如果解决方案是特定于编译器的,请具体编译器和任何与您的解决方案关联的选项标志

谢谢!

PS:忘了提及物业fun.请假设它是一个简单的函数,里面没有循环,只包括基本的算术运算.简单地将其视为内联函数.

EDIT2:由于细节fun很重要,请忘记参数c,d,e,f并假设fun定义为

inline double fun(a,b, sum){
return sum + a* ( b - sum);
}
Run Code Online (Sandbox Code Playgroud)

c c++ optimization performance loops

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

如何在python中以更有效的方式重写这个循环

我有一个以下类型的循环:

a = range(10)
b = [something]
for i in range(len(a)-1):
    b.append(someFunction(b[-1], a[i], a[i+1]))
Run Code Online (Sandbox Code Playgroud)

然而for循环正在扼杀很多性能.我试着写一个Windows生成器给我2个元素的所有时间,但它仍然需要显式的for循环.有没有办法以pythonic方式缩短和提高效率?

谢谢

编辑:我忘了b中的元素..对不起伙计们.然而,我之前的问题的解决方案对我也有其他问题非常有帮助.谢谢.

python list-comprehension list

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

找到随机数组的最大增量

假设我有一个随机实数的数组,我如何将指数配对(i, j)在哪里j<i

maximise (a[j] - a[i])O(n ln(n))时间

没有提示递归.所以我想在n nn n sort中排序数组.但是,排序数组的min和mix可能不满足j<i

差异a[j]-a[i]取决于所有i,j,因此扫描所有可能的排列是O(n^2).有人建议如何划分问题空间吗?

algorithm

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

在c ++中优化if-else分支的小循环

是否可以删除以下循环中的分支.所有迭代器都来自容器类型std::map<type_name, T>

  record_iterator beginIter = lastLookup_;                                                                                                                                                                                                                                                                                                                             
  record_iterator endIter = lastLookup_;                                                                                                                                                                                                                                                                                                                               
  ++endIter;                                                                                                                                                                                                                                                                                                                                                           
  for(;endIter != end(); ++beginIter, ++endIter){                                                                                                                                                                                                                                                                                                                      
    time_type now = beginIter->first;                                                                                                                                                                                                                                                                                                                                  
    if(ts == now){                                                                                                                                                                                                                                                                                                                                                     
      lastLookup_ = beginIter;                                                                                                                                                                                                                                                                                                                                         
      return beginIter;                                                                                                                                                                                                                                                                                                                                                
    }else if(ts > now && ts <= endIter->first){                                                                                                                                                                                                                                                                                                                        
      lastLookup_ = beginIter;                                                                                                                                                                                                                                                                                                                                         
      return endIter;
    }
  }
Run Code Online (Sandbox Code Playgroud)

该算法试图解决的问题是优化正向查找,假定该位置与最后一个查找位置相同或(不太远)前进.理想情况下,我保留了最后查找位置的迭代器,并线性向前移动.但这似乎具有相同的表现,

  record_iterator it= sliceMap_.find(ts);                                                                                                                                                                                                                                                                                                                              
  if(it !=end()){                                                                                                                                                                                                                                                                                                                                                      
    return it;                                                                                                                                                                                                                                                                                                                                                         
  }else{                                                                                                                                                                                                                                                                                                                                                               
    return sliceMap_.upper_bound(ts);                                                                                                                                                                                                                                                                                                                                  
  }         
Run Code Online (Sandbox Code Playgroud)

我觉得问题是分支,所以可以删除此代码中的分支,以便我可以分析不同的速度?

c++ optimization iterator

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