小编She*_*ohn的帖子

Sublime Text 3 - 禁用Python检查器警告"缩进包含选项卡"

我没有在网上找到这个问题的答案,所以我会在前面说出来; 这是不是一个关于SublimeLinter问题,我希望根据PEP8标准格式化我的Python代码.

如何禁用Python Checker包中的"Indentation contains tabs"警告?

python warnings syntax-checking sublimetext3

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

减去并比较随机访问迭代器:为什么以及在哪里?

我正在为我的工作开发一个小型库,我从标准的随机访问迭代器类中派生了一些类.这允许我使用像迭代器特征这样的东西,并且当我使用标准库时不要太担心algorithm.当然我知道我不必,而且我可以选择双向类别,甚至可以实现我自己的类别.但这不是重点.

IMO,"差距"时,双向和随机存取类别之间是太大了,我不明白的减法和比较操作的必要性迭代器之间的 -那就是:a-b,a<b并且a>b(和宽松的变体).

为什么标准强制执行这些运算符,有人可以给我一个例子,其中(in)相等性测试,混合迭代器 - 标量算术(复合或非复合)运算符和偏移解引用运算符是不够的?

c++ iterator random-access

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

加载numpy时,本地脚本与内置模块冲突

有很多关于相对/绝对导入问题的帖子,其中大部分都是关于Python 2和/或导入子模块的.这不是我的情况:

  • 我使用的是Python 3,所以绝对导入是默认的;
  • (我也用Python 2重现了这个问题);
  • 我不是试图从另一个子模块或任何其他复杂的情况导入子模块.我只想尝试import numpy一个脚本.

我的问题很简单:

.
??? foo
    ??? a.py
    ??? math.py

1 directory, 2 files
Run Code Online (Sandbox Code Playgroud)

其中a.py只包含import nupmymath.py包含x++(故意无效).

在这种情况下,python3 foo/a.py由于NumPy似乎无法导入标准math模块,因此运行会导致错误:

Traceback (most recent call last):
  File "foo/a.py", line 1, in <module>
    import numpy
  File "/path/to/Anaconda3/lib/python3.6/site-packages/numpy/__init__.py", line 158, in <module>
    from . import add_newdocs
  File "/path/to/Anaconda3/lib/python3.6/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/path/to/Anaconda3/lib/python3.6/site-packages/numpy/lib/__init__.py", line 3, in <module>
    import …
Run Code Online (Sandbox Code Playgroud)

python numpy anaconda conda

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

在模板运算符重载中键入冲突

对不起,这听起来像是一个常见问题,就我看来,我无法找到问题的答案.最接近的帖子是这个:仅用于基本POD的模板专业化

假设我有一个类template <class T> class A {...};,我想将operator +重载为内部二元运算符(A类型的两个对象),并作为混合二元运算符(类型A和数字POD类型的对象).

理想情况下,我想写的是:

#include <type_traits>
using namespace std;

// Declare/fine template
template <class T> class A {...};

// Internal binary operator
template < class T, class U >
    A< typename common_type<T,U>::type >
operator+ ( const A<T> &a, const A<U> &a ) { ... }

// Mixed binary operator
template < class T, class U >
    A< typename common_type<T,U>::type >
operator+ ( const A<T> &a, const U &b ) { ... } …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

按值或引用传递标量类型:这有关系吗?

当然,微优化是愚蠢的,可能是实践中出现许多错误的原因.尽管如此,我看到很多人做了以下事情:

void function( const double& x ) {}
Run Code Online (Sandbox Code Playgroud)

代替:

void function( double x ) {}
Run Code Online (Sandbox Code Playgroud)

因为它被认为"更有效率".比方说,function经常在程序中被称为数百万次; 这种"优化"是否重要?

c++ arguments reference

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

快速频率有序Walsh-Hadamard变换

编辑您可以在Github上查看我的实现:https://github.com/Sheljohn/WalshHadamard


我正在寻找一个实现,或指示如何实现,顺序排序的 Fast Walsh Hadamard变换(参见本节).

我稍微调整了一个在线发现的非常好的实现:

// (a,b) -> (a+b,a-b) without overflow
void rotate( long& a, long& b )
{
    static long t;
    t = a;
    a = a + b;
    b = t - b;
}

// Integer log2
long ilog2( long x )
{
    long l2 = 0;
    for (; x; x >>=1) ++l2;
    return l2;
}

/**
 * Fast Walsh-Hadamard transform
 */
void fwht( std::vector<long>& data …
Run Code Online (Sandbox Code Playgroud)

c c++ signal-processing

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

std :: vector <T> :: resize(n,val)是否足以进行初始化?

这是一个特定于C++ 11的问题.假设我std::vector<T> v已经使用了一个向量,并且我想将其大小调整为n使用现有值初始化的元素T val.(典型用例:vector是要回收的实例的成员).

以下方式的优缺点是什么,哪种方式最有效?

1)std::vector<T>::resize( n, val )初始化是否足够?

v.clear();
v.resize( n, val );
Run Code Online (Sandbox Code Playgroud)

2)如果没有,那么我假设以下是正确的?

v.clear();
v.resize(n);
std::fill( v.begin(), v.end(), val );
Run Code Online (Sandbox Code Playgroud)

3)交换怎么样?

v.swap( std::vector<T>( n, val ) );
Run Code Online (Sandbox Code Playgroud)

c++ initialization vector c++11

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

在OSX上更改--prefix和--with-gxx-include-dir

我正在尝试使用OSX上的g ++ 4.8在Matlab R2014b中编译Mex文件mexopts.sh。相关选项为:

->    CXX                   = g++
->    CXX flags:
         CXXFLAGS           = -ansi -D_GNU_SOURCE -std=c++0x -arch x86_64 -mmacosx-version-min=10.10 -fPIC -fno-omit-frame-pointer -pthread
         CXXDEBUGFLAGS      = -g
         CXXOPTIMFLAGS      = -O2 -DNDEBUG
         CXXLIBS            = -Wl,-rpath-link,/path/to/MATLAB_R2014b.app/bin/maci64 -L/path/to/MATLAB_R2014b.app/bin/maci64 -lmx -lmex -lmat -lm
         arguments          = -DMX_COMPAT_32
Run Code Online (Sandbox Code Playgroud)

Mex发出的编译命令是:

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
-> g++ -c  -I/path/to/MATLAB_R2014b.app/extern/include -I/path/to/MATLAB_R2014b.app/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -std=c++0x -arch x86_64 -mmacosx-version-min=10.10 -fPIC -fno-omit-frame-pointer -pthread -DMX_COMPAT_32 -O2 -DNDEBUG  "/path/to/myfile.cpp" -o /path/to/myfile.o
Run Code Online (Sandbox Code Playgroud)

我的问题是在第一线Configured with: ...,我想改变--prefix,并--with-gxx-include-dir为GCC相同的价值观:

sheljohn@computer$ g++ -v …
Run Code Online (Sandbox Code Playgroud)

c++ macos matlab gcc mex

5
推荐指数
0
解决办法
777
查看次数

不显示安装附件

Matlab Central上越来越多的软件包以附件自定义工具箱(扩展.mltbx)的形式共享。

我正在使用这样的工具箱,当我在桌面上时,只需单击它们即可安装它们。但是,我的代码最终部署在群集上,在该群集上没有一个节点安装了这些工具箱,并且没有一个Matlab实例通过display运行。

如何以编程方式安装加载项?

matlab

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

Pythonic累积图

是否有更多pythonic方式执行以下操作:

def mysteryFunction( it, fun, val ):
    out = []
    for x in it:
        y,val = fun(x,val)
        out.append(y)
    return out,val
Run Code Online (Sandbox Code Playgroud)

where it是可迭代的,fun是一个接受两个输入并返回两个输出的函数,val是一个初始值,每次调用都会"转换" fun

我问,因为我map, zip, filter, reduce经常使用和列表理解,但我无法将之前的功能表达为这些功能的组合,而这已经出现了好几次了.我错过了一个隐藏的习语,或者这只是一个适合自己的利基?


一个具体的例子是从一定的秒数计算(年,周,日,小时,分钟,秒)的持续时间:

fac = (365*24*3600, 7*24*3600, 24*3600, 3600, 60, 1)
dur,rem = mysteryFunction( fac, lambda x,y: divmod(y,x), 234567 )
Run Code Online (Sandbox Code Playgroud)

其中dur是持续时间元组,并且rem对应于最终余数(此处为零或小数,具体取决于初始值的类型).这不仅仅是挑选,还有许多其他的例子,例如:整合微分方程的固定步骤方法(可迭代步骤,步进函数,初始状态); 模拟有界随机游走; 深度的树处理没有递归; 等等

python python-3.x

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