小编lev*_*que的帖子

numpy数组和矩阵之间有什么区别?我应该使用哪一个?

各有哪些优缺点?

从我所看到的情况来看,如果需要的话,任何一个都可以作为另一个的替代品,那么我是否应该使用它们或者我应该只坚持其中一个?

该计划的风格会影响我的选择吗?我正在使用numpy做一些机器学习,所以确实有很多矩阵,但也有很多向量(数组).

python arrays numpy matrix

318
推荐指数
5
解决办法
13万
查看次数

切片NumPy 2d数组,或者如何从nxn数组(n> m)中提取mxm子矩阵?

我想切片NumPy nxn数组.我想提取该数组的m行和列的任意选择(即行数/列数没有任何模式),使其成为一个新的mxm数组.对于这个例子,让我们说数组是4x4,我想从中提取一个2x2数组.

这是我们的数组:

from numpy import *
x = range(16)
x = reshape(x,(4,4))

print x
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
Run Code Online (Sandbox Code Playgroud)

要删除的行和列是相同的.最简单的情况是当我想要提取一个位于开头或结尾的2x2子矩阵时,即:

In [33]: x[0:2,0:2]
Out[33]: 
array([[0, 1],
       [4, 5]])

In [34]: x[2:,2:]
Out[34]: 
array([[10, 11],
       [14, 15]])
Run Code Online (Sandbox Code Playgroud)

但是,如果我需要删除另一行/列的混合物怎么办?如果我需要删除第一行和第三行/行,从而提取子矩阵[[5,7],[13,15]]怎么办?行/行可以有任何组合.我读到某个地方,我只需要使用行和列的索引数组/列表索引我的数组,但这似乎不起作用:

In [35]: x[[1,3],[1,3]]
Out[35]: array([ 5, 15])
Run Code Online (Sandbox Code Playgroud)

我发现了一种方法,即:

    In [61]: x[[1,3]][:,[1,3]]
Out[61]: 
array([[ 5,  7],
       [13, 15]])
Run Code Online (Sandbox Code Playgroud)

第一个问题是它几乎不可读,尽管我可以忍受它.如果有人有更好的解决方案,我当然希望听到它.

另一件事是我在一个论坛上读到,使用数组索引数组强制NumPy制作所需数组的副本,因此当处理大型数组时,这可能会成为一个问题.为什么这样/这个机制如何运作?

python numpy slice

165
推荐指数
5
解决办法
19万
查看次数

在异常时启动IPython shell

当我的程序运行引发异常的行时,有没有办法启动IPython shell或提示?

我最感兴趣的是引发异常的范围(和子范围)中的上下文,变量.像Visual Studio的调试,当抛出异常但没有被任何人捕获时,Visual Studio将停止并给我调用堆栈和每个级别的变量.

你认为有一种方法可以使用IPython获得类似的东西吗?

编辑:-pdb启动IPython 的选项似乎没有做我想要的(或者我可能不知道如何正确使用它,这是完全可能的).我运行以下脚本:

def func():
    z = 2
    g = 'b'
    raise NameError("This error will not be caught, but IPython still"
                    "won't summon pdb, and I won't be able to consult"
                    "the z or g variables.")

x = 1
y = 'a'

func()
Run Code Online (Sandbox Code Playgroud)

使用命令:

ipython -pdb exceptionTest.py
Run Code Online (Sandbox Code Playgroud)

这会在引发错误时停止执行,但会给我一个IPython提示符,其中我可以访问脚本的全局变量,但不能访问函数func的局部变量.pdb只在我在ipython中直接输入导致错误的命令时调用,即raise NameError("This, sent from the IPython prompt, will trigger pdb.").

我不一定需要使用pdb,我只想访问里面的变量func.

编辑2:已经有一段时间了,IPython的-pdb选项现在正如我想要的那样工作.这意味着当我提出异常时,我可以返回范围func并读取其变量z …

python debugging ipython

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

在Eclipse中,如何在当前编辑的文件的目录中打开文件浏览器

我知道在eclipse中可以从项目的资源浏览器中打开文件浏览器,但是对于不属于您项目的文件是否可能?通常在资源浏览器中找不到外部包含...

如果编辑器有等效的$(resource_loc),那就可以了.但是我找不到它.谁可以帮我这个事 ?

谢谢!

编辑:我找到了StartExplorer,但它对我不起作用.使用WINDOWS explorercmd.exe进行硬编码.此外,它仍然需要您使用资源浏览器.除此之外,它可以打开在编辑器中选择的路径,但它们必须是完整路径.

编辑2:StartExplorer似乎已升级.我不再使用eclipse,但如果其他人仍在寻找这个,我会再看看他们的东西!

eclipse file-browser

23
推荐指数
3
解决办法
5万
查看次数

知道任何好的c ++支持向量机(SVM)库吗?

你知道有什么好的c ++ svm库我试过libsvm http://www.csie.ntu.edu.tw/~cjlin/libsvm/但是到目前为止我并没有大吃一惊.

我也听说过SVMLightTinySVM.你试过吗?任何新球员?

谢谢 !

c++ classification machine-learning svm libsvm

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

Numpy:连接多维和一维数组

我有一个2x2 numpy数组:

x = array(([[1,2],[4,5]]))
Run Code Online (Sandbox Code Playgroud)

我必须与一维数组合并(或堆叠,如果你愿意):

y = array(([3,6]))
Run Code Online (Sandbox Code Playgroud)

通过将它添加到行的末尾,从而形成一个2x3 numpy数组,其输出如下:

数组([[1,2,3],[4,5,6]])

现在,在numpy指南中提出的方法是:

hstack((x,y))
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,返回以下错误:

ValueError:数组必须具有相同数量的维度

可能的唯一解决方法似乎是这样做:

hstack((x, array(([y])).T ))
Run Code Online (Sandbox Code Playgroud)

这是有效的,但看起来和听起来相当hackish.似乎没有其他方法来转置给定的数组,因此hstack能够消化它.我想知道,有更清洁的方法吗?难道没有办法让numpy猜出我想做什么吗?

python arrays numpy concatenation

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

有没有办法在Visual Studio中显示整个解决方案的构建时间?

我知道有一种方法可以显示visual studio中解决方案中包含的每个项目的构建时间.但我正在寻找的是构建整个解决方案所花费的总时间,从我点击构建的那一刻起到完成的那一刻.

反正有没有这样做?运行Visual Studio 2008.

build-time visual-studio-2008 visual-studio

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

我应该使用`from numpy import*`将numpy(或pylab)用作python环境吗?

我在所有的python程序中使用pylab(更具体地说是numpy).例外情况非常罕见,如果有的话.到目前为止,我已经习惯了以下列方式导入numpy:

from numpy import *
Run Code Online (Sandbox Code Playgroud)

这样做的好处是从一开始就让它看起来像是python的一部分.在每个脚本中导入这样的numpy有什么不好的事吗?我的意思是除了每个脚本/程序都需要更多内存并且需要更长时间才能加载的事实.

我认为在来自numpy(例如np.zeros(3))的每个函数调用之前总是必须写numpy甚至np 是单调乏味的,因为它需要我知道哪个函数来自numpy而哪个函数不来.我真的不在乎零函数来自numpy或python,我只是想/需要使用它.

根据你的哪种表示法更好?

python coding-style numpy

12
推荐指数
2
解决办法
2444
查看次数

如果嵌套在函数中,listcomp无法访问由exec调用的代码中定义的本地

是否有任何python大师能够解释为什么这段代码不起作用:

def f(code_str):
    exec(code_str)

code = """
g = 5
x = [g for i in range(5)]
"""

f(code)
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "py_exec_test.py", line 9, in <module>
    f(code)
  File "py_exec_test.py", line 2, in f
    exec(code_str)
  File "<string>", line 3, in <module>
  File "<string>", line 3, in <listcomp>
NameError: name 'g' is not defined
Run Code Online (Sandbox Code Playgroud)

虽然这个工作正常:

code = """
g = 5
x = [g for i in range(5)]
"""

exec(code)
Run Code Online (Sandbox Code Playgroud)

我知道它与locals和globals有关,就好像我从我的主范围传递exec函数locals和globals它工作正常,但我不完全理解发生了什么.

这可能是Cython的一个错误吗?

编辑:尝试使用python 3.4.0和python 3.4.3

python list-comprehension python-exec

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

MFC单选按钮 - DDX_Radio和DDX_Control行为

我有一个MFC对话框,其中有两个单选按钮.我已将它们放在一个很好的组中,它们的IDC是一个接一个(RB_LEFT, RB_RIGHT).

我想使用DDX_Radio所以我可以使用整数值访问按钮,所以在DoDataExchange函数中我调用:

   DDX_Radio(pDX, RB_LEFT, mRBLeftRight);
Run Code Online (Sandbox Code Playgroud)

其中mRBLeftRight是整数类型的成员变量.我还需要编辑按钮属性,所以我想用a DDX_Control来映射成员变量mRBLeft和mRBRight(CButton):

   DDX_Control(pDX, RB_LEFT, mRBLeft);
   DDX_Control(pDX, RB_RIGHT, mRBRight);
Run Code Online (Sandbox Code Playgroud)

现在,如果我进行调用DDX_Control,每当调用DoDataExchange时,应用程序崩溃,因为DDX_Control强制RB_LEFT处理DDX_Radio无法处理的消息.这一部分我明白了.

我决定不使用DDX_Control(删除DoDataExchange中的调用)并在我的类中保留指向我的单选按钮(CButton*)的指针.所以在我的OnInitDialog函数中,我执行以下调用:

   mRBLeft= ((CButton*)GetDlgItem(RB_LEFT));
   mRBRight = ((CButton*)GetDlgItem(RB_RIGHT));
Run Code Online (Sandbox Code Playgroud)

现在,只要我不使用mRBLeft就可以了,但是如果我这样做的话,bam会在DoDataExchange上崩溃.让我感到困惑的是,如果我改变我的左侧单选按钮, ((CButton*)GetDlgItem(RB_LEFT)->SetCheck(true) 它会起作用.那么有什么区别?

(我知道这很麻烦,但我只是想了解机制)

c++ mfc radio-button

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