我刚刚在我的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) 如果我有这个:
class foo(object):
@property
def bar(self):
return 0
f = foo()
Run Code Online (Sandbox Code Playgroud)
如果可能的话,如何在不实际调用方法的情况下获得对f.bar的引用?
编辑添加:我想要做的是编写一个函数,迭代f的成员并对它们做一些事情(什么是不重要的).属性让我失望,因为只需在getattr()中命名它们就会调用它们的__get __()方法.
在我之前的问题中,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它之间有什么区别?
我想通过提供一个调用用户功能的界面,为我的一个模块的用户提供扩展功能的能力.例如,我想让用户在创建类的实例时获得通知的能力,并且在使用它之前有机会修改实例.
我实现它的方法是声明一个模块级工厂函数来进行实例化:
# 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-callbacks或PyDispatcher这样的模块在我看来就像矫枉过正,尤其是后者,但如果对使用我的模块的程序员有很大的好处,我会向他们开放.
我一直在寻找一个简单的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导入过滤器或预处理器,这些源文件本质上是带有额外语言元素的Python.目标是读取源文件,将其解析为抽象语法树,应用一些转换以实现语言的新部分,并编写有效的Python源,然后CPython可以使用它.我想用Python编写这个东西,我正在为这个任务寻找最好的解析器.
内置于Python的解析器是不合适的,因为它要求源文件是实际的Python,而这些不是.有大量的解析器(或解析器生成器)可以与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不允许我像第一个示例一样使用方括号和常规括号?
我正在开发一个文档测试框架 - 基本上是PDF的单元测试.测试是框架定义的类实例的(修饰)方法,它们在运行时定位和实例化,并调用方法来执行测试.
我的目标是减少编写测试的人需要关注的古怪Python语法的数量,因为这些人可能是也可能不是Python程序员,甚至根本不是程序员.所以我希望他们能够为方法编写"def foo():"而不是"def foo(self):",但仍然可以使用"self"来访问成员.
在一个普通的程序中,我会认为这是一个可怕的想法,但在像这样的特定于域的语言类程序中,似乎值得一试.
我已经通过使用装饰器成功地从方法签名中消除了自我(实际上,因为我已经为测试用例使用了装饰器,我只是将其滚动到那个),但是"self"不会引用任何内容.测试用例方法.
我已经考虑过使用global for self,甚至提出了一个或多或少有效的实现,但我宁愿污染最小的命名空间,这就是为什么我更愿意将变量直接注入test case方法的本地命名空间.有什么想法吗?
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.为什么不工作?
我想在我的进程之间共享一个字典,如下所示:
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返回{}.我怎样才能使它工作?
谢谢,