小编Pat*_*ick的帖子

Numpy dot对于对称乘法太聪明了

有人知道这种行为的文档吗?

import numpy as np
A  = np.random.uniform(0,1,(10,5))
w  = np.ones(5)
Aw = A*w
Sym1 = Aw.dot(Aw.T)
Sym2 = (A*w).dot((A*w).T)
diff = Sym1 - Sym2
Run Code Online (Sandbox Code Playgroud)

diff.max()接近机器精度非零,例如4.4e-16.

这(与0的差异)通常很好......在有限精度的世界里,我们不应该感到惊讶.

此外,我猜想numpy对于对称产品很聪明,可以节省触发器并确保对称输出......

但我处理混乱的系统,这种小的差异在调试时很快变得明显.所以我想确切地知道发生了什么.

python floating-point numpy linear-algebra floating-accuracy

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

Vim Supertab插件在导航完成菜单时反转方向

当我通过supertab遍历完成备选列表(即通过按下激活<TAB>)时,选择从列表的末尾开始,并在反复按<TAB>或时向上循环<C-n>.按下<S-TAB><C-p>循环向下.

当vim内置(?)激活自动完成时,会发生相反的行为,我觉得更方便<C-x><C-n>.然后<C-n>向下和<C-p>向上循环.

我对vim知之甚少.我怎样才能解决这个问题?

vim vim-plugin

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

Vim滚动设置被覆盖

我正在尝试为我的.tex文件应用以下设置:

set scroll=4
Run Code Online (Sandbox Code Playgroud)

我把它放在我~/.vimrc和我的~/.vim/ftplugin/tex.vim文件中.对于一般文件,这工作正常.对于.tex文件,将应用这些文件中的所有其他设置.但不是滚动设置.

注意:我安装了乳胶套件,这是我怀疑覆盖设置.

当我输入

:verbose set scroll
Run Code Online (Sandbox Code Playgroud)

我明白了:

  scroll=22
    Last set from ~/.vim/ftplugin/tex.vim
Run Code Online (Sandbox Code Playgroud)

注意:22是gvim窗口高度(行数)的一半.

如果我~/.vim/ftplugin/tex.vim在编辑时获取文件,则滚动设置应用正常,但我希望它在启动时与其他设置一起应用.

谢谢

更新:

谢谢你的好建议.但它还没有奏效.我看了看,scriptnames这是输出:

    62: /home/patrick/.vim/after/ftplugin/tex.vim
    63: /home/patrick/.vim/indent/tex.vim
    64: /usr/share/vim/vim72/syntax/bib.vim
    65: /home/patrick/.vim/ftplugin/bib_latexSuite.vim
    66: /home/patrick/.vim/after/ftplugin/bib.vim
    67: /usr/share/vim/vim72/indent/bib.vim
    68: /home/patrick/.vim/nerdtree_plugin/exec_menuitem.vim
    69: /home/patrick/.vim/nerdtree_plugin/fs_menu.vim
Run Code Online (Sandbox Code Playgroud)

如您所见,我还在after/ftplugin目录中添加了一个bib.vim文件,因为我在启动时加载了4个选项卡,其中一个是bib文件.但是,它仍然无效.

更新2

好吧,我仍然遇到同样的问题,但有更多的信息.我现在正在运行vim的Windows版本.再次vim声称滚动最后设置~/.vimrc.但是无论何时都会被覆盖

  • 我打开一个新标签(包含任何旧文件,因此vimrc设置应该仍然适用)
  • 我调整了gvim窗口的大小

因此,我不再相信这与乳胶套件或调用设置的顺序有关.

vim

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

在CodeBlocks中查看语言(C/C++)参考/文档

关于StackOverflow的第一个问题......

有没有人知道通过CodeBlocks查看语言的参考/文档手册的方法?专门针对C/C++.

示例:
假设我要查找strncpy()的引用.在一个非常古老的Borland系统(我们在学校使用)中,我会写下这个单词并在其上单击鼠标,从而将其作为参考.如果可以以某种方式浏览手册,那也很好.

我是否完全忽略了这一点(也在搜索谷歌),还是缺少了?如果它丢失了,那么在没有在线的情况下搜索C和/或参考手册的最快方法是什么?

问候!

c c++ codeblocks

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

意外减慢了就地修改数组的函数

这个错误是由于Matlab太聪明了.

我有类似的东西

for k=1:N
    stats = subfun(E,k,stats);
end
Run Code Online (Sandbox Code Playgroud)

其中stats是一个1xN阵列,N=5000比方说,和subfun计算stats(k)E,并且它填充到统计

function stats = subfun(E,k,stats)
    s = mean(E);
    stats(k) = s;
end
Run Code Online (Sandbox Code Playgroud)

当然,来回传递大数组会有一些开销,只是为了填充其中一个元素.然而,在我的情况下,开销是可以忽略的,我更喜欢这个代码而不是

for k=1:N
    s = subfun(E,k);
    stats(k) = s;
end
Run Code Online (Sandbox Code Playgroud)

我的偏好是因为我实际上有更多的任务而不仅仅是stats.此外,一些任务实际上更复杂.

如上所述,开销可以忽略不计.但是,如果我做一些微不足道的事情,比如这个无关紧要的if语句

for k=1:N
    i = k;
    if i>=1
        stats = subfun(E,i,stats);
    end
end
Run Code Online (Sandbox Code Playgroud)

然后,在subfun内发生的任务突然变为"永远"(它比N线性地增加得快得多).这是任务,而不是永远的计算.事实上,它甚至比以下荒谬更糟糕subfun

function stats = subfun(E,k,stats)
    s = calculation_on_E(E);
    clear stats
    stats(k) = s;
end
Run Code Online (Sandbox Code Playgroud)

这需要每次重新分配统计数据.

有没有人知道为什么会这样?

performance matlab

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

为什么有必要在Matlab中调用rng()两次

这对我来说似乎是个错误.似乎有必要rng()在Matlab中调用两次以获得所需的种子.考虑以下实验:

>> sd = rng(3) % THIS DOES NOT WORK

sd = 

     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

>> sd = rng(3) % BUT NOW IT DOES

sd = 

     Type: 'twister'
     Seed: 3
    State: [625x1 uint32]

>> sd = rng(3) % AND AGAIN, TO CONFIRM

sd = 

     Type: 'twister'
     Seed: 3
    State: [625x1 uint32]

>> sd = rng('shuffle') % BUT THIS FAILS

sd = 

     Type: 'twister'
     Seed: 3
    State: [625x1 uint32]

>> sd = rng('shuffle') % BUT …
Run Code Online (Sandbox Code Playgroud)

random matlab

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

无法识别的Vim键盘映射

我试图摆脱vim中令人讨厌的键盘映射,即

\c
Run Code Online (Sandbox Code Playgroud)

映射仅为latex文件加载,因此它应该与latex-suite相关.这很烦人,因为如果\cite没有这个键映射会破坏一切,它就无法打字.我可以通过输入以下内容"手动"取消映射:

:unmap! \c
Run Code Online (Sandbox Code Playgroud)

但是当我把它放到我的~/.vimrc文件中时,这不起作用,因为它说没有这样的键映射.我想这是因为keymap是在加载之后加载的.vimrc,虽然我不确定.

我已经尝试locate在bash中找到我的系统上的所有文件,这些文件在其文件名中都有"vim",然后grep keyword $filename查找对应该相关的关键字的所有引用.

我搜索的关键字是"繁体",因为这就是调用映射的内容(这是我:map!在vim普通模式下输入的内容).它找到一些包含"Traditional"但没有任何内容的条目\c,除了在文件中:

~/.gnome2/gvim-sA9LOO-session.vim
Run Code Online (Sandbox Code Playgroud)

但据我所知,启动时vim不会使用此文件.

有人知道任何修复?

linux vim keymapping

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