小编kin*_*all的帖子

ValueError:numpy.dtype的大小错误,请尝试重新编译

我刚刚在我的python 2.7上安装了pandas和statsmodels包当我尝试"导入pandas as pd"时,会出现此错误消息.有人可以帮忙吗?谢谢!!!

numpy.dtype has the wrong size, try recompiling
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\__init__.py",
line 4, in <module>
    from formulatools import handle_formula_data
  File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\formula\formulatools.p
y", line 1, in <module>
    import statsmodels.tools.data as data_util
  File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\__init__.py", li
ne 1, in <module>
    from tools import add_constant, categorical
  File "C:\analytics\ext\python27\lib\site-packages\statsmodels-0.5.0-py2.7-win32.egg\statsmodels\tools\tools.py", line
14, in <module>
    from pandas import DataFrame
  File "C:\analytics\ext\python27\lib\site-packages\pandas\__init__.py", line 6, in <module>
    from . import hashtable, tslib, lib
  File "numpy.pxd", line …
Run Code Online (Sandbox Code Playgroud)

python install numpy pandas statsmodels

85
推荐指数
4
解决办法
8万
查看次数

我可以获得Python属性的引用吗?

如果我有这个:

class foo(object):
    @property
    def bar(self):
        return 0

f = foo()
Run Code Online (Sandbox Code Playgroud)

如果可能的话,如何在不实际调用方法的情况下获得对f.bar的引用?

编辑添加:我想要做的是编写一个函数,迭代f的成员并对它们做一些事情(什么是不重要的).属性让我失望,因为只需在getattr()中命名它们就会调用它们的__get __()方法.

python properties

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

如何返回函数的输出与打印不同?

在我之前的问题中,Andrew Jaffe写道:

除了所有其他提示和技巧之外,我认为你错过了一些至关重要的东西:你的功能实际上需要返回一些东西.当你创建autoparts()或者splittext(),我们的想法是,这将是一个你可以调用的函数,它可以(而且应该)回馈一些东西.一旦你找到了你想要你的函数的输出,你需要把它放在一个return语句中.

def autoparts():
    parts_dict = {}
    list_of_parts = open('list_of_parts.txt', 'r')

    for line in list_of_parts:
        k, v = line.split()
        parts_dict[k] = v

    print(parts_dict)

>>> autoparts()
{'part A': 1, 'part B': 2, ...}
Run Code Online (Sandbox Code Playgroud)

此函数创建一个字典,但它不返回任何内容.但是,因为我添加了print,所以当我运行该函数时会显示该函数的输出.什么return东西和print它之间有什么区别?

python return

33
推荐指数
3
解决办法
25万
查看次数

在Python中实现钩子或回调的首选方法是什么?

我想通过提供一个调用用户功能的界面,为我的一个模块的用户提供扩展功能的能力.例如,我想让用户在创建类的实例时获得通知的能力,并且在使用它之前有机会修改实例.

我实现它的方法是声明一个模块级工厂函数来进行实例化:

# in mymodule.py
def factory(cls, *args, **kwargs):
    return cls(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

然后,当我需要mymodule中的一个类的实例时,我会factory(cls, arg1, arg2)而不是cls(arg1, arg2).

为了扩展它,程序员会在另一个模块中写一个这样的函数:

def myFactory(cls, *args, **kwargs):
    instance = myFactory.chain(cls, *args, **kwargs)
    # do something with the instance here if desired
    return instance
Run Code Online (Sandbox Code Playgroud)

上面回调的安装如下所示:

myFactory.chain, mymodule.factory = mymodule.factory, myFactory
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很简单,但我想知道,作为一名Python程序员,你是否期望一个函数能够注册一个回调而不是一个赋值,或者你是否还有其他方法.我的解决方案对您来说是否可行,惯用且清晰?

我希望尽可能保持简单; 我不认为大多数应用程序实际上需要链接多个用户回调,例如(尽管使用上述模式无限链接"免费").我怀疑他们需要删除回调或指定优先级或订单.像python-callbacksPyDispatcher这样的模块在我看来就像矫枉过正,尤其是后者,但如果对使用我的模块的程序员有很大的好处,我会向他们开放.

python hook factory callback

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

处理异常的Python线程池

我一直在寻找一个简单的python线程池模式的良好实现,真的找不到任何适合我的需求.我正在使用python 2.7,我发现的所有模块都不起作用,或者没有正确处理工作程序中的异常.我想知道是否有人知道可以提供我正在搜索的功能类型的库.非常感谢.

我的第一次尝试是使用内置multiprocessing模块,但由于这不使用线程而是使用子进程,而是遇到了无法对对象进行pickle的问题.不要去这里

from multiprocessing import Pool

class Sample(object):
    def compute_fib(self, n):
        phi = (1 + 5**0.5) / 2
        self.fib = int(round((phi**n - (1-phi)**n) / 5**0.5))

samples = [Sample() for i in range(8)]
pool = Pool(processes=8)
for s in samples: pool.apply_async(s.compute_fib, [20])
pool.join()
for s in samples: print s.fib

# PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
Run Code Online (Sandbox Code Playgroud)

期货

所以,我看到有一些的蟒蛇3.2凉爽的并发功能回到端口这里.这似乎完美且易于使用.问题是,当你在一个工人一个例外,你只能得到异常的类型,比如"ZeroDivisionError",但没有回溯,因此没有迹象表明其中线导致异常.代码变得无法调试.不行.

from concurrent import futures

class Sample(object):
    def compute_fib(self, n):
        phi = (1 + 5**0.5) …
Run Code Online (Sandbox Code Playgroud)

python multithreading exception-handling threadpool

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

Python解析器,用于类似Python的语言

我正在寻找为源文件编写Python导入过滤器或预处理器,这些源文件本质上是带有额外语言元素的Python.目标是读取源文件,将其解析为抽象语法树,应用一些转换以实现语言的新部分,并编写有效的Python源,然后CPython可以使用它.我想用Python编写这个东西,我正在为这个任务寻找最好的解析器.

内置于Python的解析器是不合适的,因为它要求源文件是实际的Python,而这些不是.有大量的解析器(或解析器生成器)可以与Python一起使用,但如果没有大量的研究,很难说哪个是最适合我的需求.

总之,我的要求是:

  1. Parser是用Python编写的,或者是Python绑定.
  2. 附带一个我可以调整的Python语法,或者可以轻松地使用其他地方可用的可调整的Python语法(例如http://docs.python.org/reference/grammar.html).
  3. 转换后可以重新序列化AST.
  4. 用API方式工作不应该太可怕.

有什么建议?

python parsing code-generation

13
推荐指数
2
解决办法
2231
查看次数

了解列表vs系列中的Python语法

我是Python的新手(无计算机科学背景)用于数据科学。我一直在听说Python很简单,但是我正在逐步取得进步。例如,我了解:

len(titles[(titles.year >= 1950) & (titles.year <=1959)])
Run Code Online (Sandbox Code Playgroud)

“在标题数据框中,创建一个序列,并从标题数据框的Year列中获取大于或等于1950且小于或等于1959的任何值。取其长度。”

但是,当我遇到以下情况时,我不了解以下逻辑:

t = titles
(t.year // 10 * 10).value_counts().sort_index().plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)

要么

titles.title.value_counts().head(10)
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都可以将其组合在一起。但是还不清楚。在第二篇文章中,为什么Python不允许我像第一个示例一样使用方括号和常规括号?

python syntax pandas

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

如何在没有明确接受的情况下将自己变成Python方法

我正在开发一个文档测试框架 - 基本上是PDF的单元测试.测试是框架定义的类实例的(修饰)方法,它们在运行时定位和实例化,并调用方法来执行测试.

我的目标是减少编写测试的人需要关注的古怪Python语法的数量,因为这些人可能是也可能不是Python程序员,甚至根本不是程序员.所以我希望他们能够为方法编写"def foo():"而不是"def foo(self):",但仍然可以使用"self"来访问成员.

在一个普通的程序中,我会认为这是一个可怕的想法,但在像这样的特定于域的语言类程序中,似乎值得一试.

我已经通过使用装饰器成功地从方法签名中消除了自我(实际上,因为我已经为测试用例使用了装饰器,我只是将其滚动到那个),但是"self"不会引用任何内容.测试用例方法.

我已经考虑过使用global for self,甚至提出了一个或多或少有效的实现,但我宁愿污染最小的命名空间,这就是为什么我更愿意将变量直接注入test case方法的本地命名空间.有什么想法吗?

python variables local self

8
推荐指数
3
解决办法
4261
查看次数

使用Try和Except Python 2.7.1进行文件打开功能

def FileCheck(fn):       
       try:
           fn=open("TestFile.txt","U") 
       except IOError: 
           print "Error: File does not appear to exist."
       return 0 
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个函数来检查文件是否存在,如果不存在,那么它应该打印错误消息并返回0.为什么不工作?

python file function try-catch except

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

Python在并行进程之间共享字典

我想在我的进程之间共享一个字典,如下所示:

def f(y,x):
    y[x]=[x*x]                                                          

if __name__ == '__main__':
    pool = Pool(processes=4)
    inputs = range(10)
    y={}                             
    result = pool.map(f,y,inputs)
Run Code Online (Sandbox Code Playgroud)

y返回{}.我怎样才能使它工作?

谢谢,

python multiprocessing

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