小编Lev*_*sky的帖子

Python3安装成功,但无法在终端中打开

昨天我重新安装了我的Mac OS X 10.8,在重新安装之前我的机器上安装了python2.7.5和python3.3.2并且工作正常,但是在重新安装系统后我无法再次打开python3.所以我下载了Python3的DMG包并重新安装它,但它仍然在终端中引发了这个异常:

Fatal Python error: Py_Initialize: unable to load the file system codec 
File"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/__init__.py", line 123
raise CodecRegistryError,\
                        ^
SyntaxError: invalid syntax
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

然后出现了一个系统问题报告窗口:它说:

Process:         Python [51780]
Path:            /Library/Frameworks/Python.framework/Versions/3.3/Resources/Python.app/Contents/MacOS/Python
Identifier:      Python
Version:         3.3.2 (3.3.2)
Code Type:       X86-64 (Native)
Parent Process:  bash [51586]
User ID:         501

Date/Time:       2013-09-23 00:40:19.908 +0800
OS Version:      Mac OS X 10.8.5 (12F37)
Report Version:  10

Interval Since Last Report:          77033 sec
Crashes Since Last Report:           1982088234
Per-App Crashes Since Last Report:   4 …
Run Code Online (Sandbox Code Playgroud)

python macos python-3.x

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

按照另一个索引的顺序对Pandas Dataframe进行排序

假设我有两个共享相同索引的数据帧,df1和df2.df1按照我希望df2排序的顺序排序.

df=pd.DataFrame(index=['Arizona','New Mexico', 'Colorado'],columns=['A','B','C'], data=[[1,2,3],[4,5,6],[7,8,9]])
print df

            A  B  C
Arizona     1  2  3
New Mexico  4  5  6
Colorado    7  8  9


df2=pd.DataFrame(index=['Arizona','Colorado', 'New Mexico'], columns=['D'], data=['Orange','Blue','Green'])
print df2
                 D
Arizona     Orange
Colorado      Blue
New Mexico   Green
Run Code Online (Sandbox Code Playgroud)

通过第一个数据框的索引对第二个数据帧进行排序的最佳/最有效方法是什么?

一个选项是加入它们,排序,然后删除列:

df.join(df2)[['D']]

                 D
Arizona     Orange
New Mexico   Green
Colorado      Blue
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?

谢谢!

python pandas

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

numpy.searchsorted的性能在结构化数组上很差

提前抱歉,如果我误用了任何条款,请随时纠正.

我有一个排序数组dtype '<f16, |S30'.当我searchsorted在它的第一个字段上使用时,它的工作速度非常慢(对于300万个项目,大约需要0.4秒).这比bisect在元组的普通Python列表上做同样的事情要长得多.

%timeit a['f0'].searchsorted(400.)
1 loops, best of 3: 398 ms per loop
Run Code Online (Sandbox Code Playgroud)

但是,如果我将float部分复制到另一个单独的数组,则搜索速度快于bisect:

b = a['f0'].copy()

%timeit b.searchsorted(400.)
1000000 loops, best of 3: 945 ns per loop
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 我做错了什么还是在NumPy中回归?
  2. 有没有办法绕过这个而不重复数据?

python arrays numpy binary-search

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

使用python lxml.etree获取巨大的XML文件

我想用lxml.etreePython 解析一个巨大的xml(> 200MB).我试图用来etree.parse加载XML文件,但由于文件大小,这不起作用:

etree.parse('file.xml')Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 2706, in lxml.etree.parse (src/lxml/lxml.etree.c:49958)
  File "parser.pxi", line 1500, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:71797)
  File "parser.pxi", line 1529, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:72080)
  File "parser.pxi", line 1429, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:71175)
  File "parser.pxi", line 975, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:68173)
  File "parser.pxi", line 539, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:64257)
  File "parser.pxi", line 625, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:65178)
  File "parser.pxi", line 565, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:64521)
lxml.etree.XMLSyntaxError: Excessive depth in document: 256 …
Run Code Online (Sandbox Code Playgroud)

python lxml

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

AttributeError:'module'对象没有属性

我已经看过这个主题的其他帖子,但没有找到一个明确的答案,尽管我确信它很简单.

我的代码有以下结构......

import matplotlib
...
...

class xyz:
    def function_A(self,...)
        ...
        ...
        fig1 = matplotlib.figure()
        ...
        ...
Run Code Online (Sandbox Code Playgroud)

我从'xyz'的实例调用'function_A',当我这样做时,我收到错误消息:

AttributeError: 'module' object has no attribute 'figure'
Run Code Online (Sandbox Code Playgroud)

根据我读过的帖子,我导入matplotlib的方式似乎有问题,但我无法解决它.我曾尝试Function_A定义中导​​入它(我认为这是坏的形式,但我想测试),但我仍然是同样的错误.

我在其他地方使用了我的'function_A'代码没有问题,但它只是模块中的一个函数,而不是类中的方法.

任何帮助表示赞赏!

python python-2.7

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

在Python中将有限的dict值解压缩为局部变量的优雅方法

我正在寻找一种优雅的方法来从Python字典中提取一些值到本地值.

与此相当的东西,但对于更长的值列表更清晰,以及更长的键/变量名称:

d = { 'foo': 1, 'bar': 2, 'extra': 3 }
foo, bar = d['foo'], d['bar']
Run Code Online (Sandbox Code Playgroud)

我原本希望得到以下内容:

foo, bar = d.get_tuple('foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

我可以轻松编写一个不错的函数:

def get_selected_values(d, *args):
    return [d[arg] for arg in args]

foo, bar = get_selected_values(d, 'foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

但我一直怀疑还有一些其他的内置方式.

python

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

使用Sphinx进行文档化时,省略(或格式化)变量的值

我目前正在记录整个模块autodoc.但是,我在模块级别定义了几个包含长列表或dicts的变量.它们与值一起包含在文档中,并且值未格式化,因此看起来像10行混乱.我想要的是包含那些变量的docstring,但是要省略值或至少很好地格式化.

我试图从automodule指令中排除变量并添加它:

.. automodule:: foo.bar
   :members:
   :exclude-members: longstuff

   .. py:data:: longstuff
Run Code Online (Sandbox Code Playgroud)

这导致只包含变量名,而文档字符串和值longstuff都没有出现在文档中.

如何保持文档字符串并同时删除值(或者格式良好)?提前致谢.

python documentation python-sphinx

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

运算符在python中映射到魔术方法的位置?

我一直在阅读python中的魔术方法,我发现了很多关于覆盖它们以及它们服务的目的的信息,但我无法找到语言特定的操作符和操作映射到那些的位置方法(+寻找__add__,+=寻找__iadd__,创建从一个类的新对象可能调用__new____init__等)有没有什么地方我可以看到在Python解释器(或任何下级机构)遇到一个加号,会发生什么?

python

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

用Python解决图形问题

我有一种情况,我想用Python来解决这个问题,但不幸的是我对图表知之甚少.我找到了一个看起来非常适合这个相对简单的任务的库networkx,但是我遇到的问题是我想做的事情,这应该是相当简单的.

我有一个节点列表,可以有不同的类型,以及两个"类"的邻居,向上和向下.任务是在两个目标节点之间找到路径,并考虑到一些约束:

  • 只能遍历特定类型的节点,即如果起始节点是x类型,则路径中的任何节点都必须来自另一组路径y或z
  • 如果节点的类型为y,则只能传递一次
  • 如果节点具有类型z,则可以传递两次
  • 如果访问类型为z的节点,则退出必须来自不同类别的邻居,即如果从上方访问,则退出必须来自向下

所以,我尝试了一些实验,但正如我所说,我一直在努力.首先,我不确定这实际代表什么类型的图表?它不是方向性的,因为从节点1到节点2,或从节点2到节点1无关紧要(除了在最后一个场景中,因此使事情复杂化......).这意味着我不能只创建一个简单的多向图形,因为我必须考虑到这个约束.其次,我必须遍历这些节点,但指定只有特定类型的节点必须可用于路径.此外,如果最后一个场景发生,我必须记住进入和退出类/方向,这使它处于某种有针对性的状态.

这是一些示例模型代码:

import networkx as nx

G=nx.DiGraph()
G.add_node(1, type=1)
G.add_node(2, type=2)
G.add_node(3, type=3)
G.add_edge(1,2, side="up")
G.add_edge(1,3, side="up")
G.add_edge(2,1, side="down")
G.add_edge(2,3, side="down")
for path in nx.all_simple_paths(G,1,3):
    print path
Run Code Online (Sandbox Code Playgroud)

输出相当不错,但我需要这些约束.那么,您是否有一些建议如何实现这些,或者给我一些关于理解这类问题的指导,或者针对这个问题提出不同的方法或库?也许一个简单的基于字典的算法适合这种需要?

谢谢!

python algorithm graph path networkx

11
推荐指数
2
解决办法
1155
查看次数

使用opencv确定点是在形状的内部还是外部

我有白色背景和简单形状的图像(每个图像有一个形状).我想确定某个点(x,y)是否在形状内部.我怎么能用opencv做到这一点?

opencv

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