小编fil*_*den的帖子

了解Python导入和循环依赖的行为

注意:这是关于导入模块而不是那些模块中的类,函数,所以我认为它不是鬃毛"ImportError:无法导入名称"的重复结果,至少我没有找到一个匹配这个.

我确实理解,按名称从模块导入类或函数可能会导致问题,因为如果存在循环依赖关系,模块本身可能尚未完全初始化,但这不是这里的情况.

要重现此问题,请创建三个对其具有循环依赖关系的模块.

首先创建一个包:

$ mkdir pkg
$ touch pkg/__init__.py
Run Code Online (Sandbox Code Playgroud)

然后创建pkg/a.py,内容为:

from __future__ import print_function
from __future__ import absolute_import

from . import b

def A(x):
    print('I am A, x={}.'.format(x))
    b.B(x + 1)

def Z(x):
    print('I am Z, x={}. I\'m done now!'.format(x))
Run Code Online (Sandbox Code Playgroud)

和pkg/b.py,内容如下:

from __future__ import print_function
from __future__ import absolute_import

from . import c

def B(x):
    print('I am B, x={}.'.format(x))
    c.C(x * 2)
Run Code Online (Sandbox Code Playgroud)

和pkg/c.py,内容如下:

from __future__ import print_function
from __future__ import absolute_import

from . import a

def …
Run Code Online (Sandbox Code Playgroud)

python circular-dependency python-import python-2.7 python-3.x

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

如何解决稀疏矩阵的慢组?

我有一个大矩阵(约 2 亿行)描述了每天发生的动作列表(有约 10000 个可能的动作)。我的最终目标是创建一个共现矩阵,显示在同一天发生的操作。

这是一个示例数据集:

data = {'date':   ['01', '01', '01', '02','02','03'],
        'action': [100, 101, 989855552, 100, 989855552, 777]}
df = pd.DataFrame(data, columns = ['date','action'])
Run Code Online (Sandbox Code Playgroud)

我尝试使用 pd.get_dummies 创建一个稀疏矩阵,但是解开矩阵并在其上使用 groupby 非常慢,仅 5000 行就需要 6 分钟。

# Create a sparse matrix of dummies
dum = pd.get_dummies(df['action'], sparse = True)
df = df.drop(['action'], axis = 1)
df = pd.concat([df, dum], axis = 1)

# Use groupby to get a single row for each date, showing whether each action occurred.
# The groupby …
Run Code Online (Sandbox Code Playgroud)

python sparse-matrix pandas

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