小编san*_*tle的帖子

使用numba的收益来自纯粹的numpy代码?

我想了解当使用Numba来加速numpyfor循环中的纯代码时,收益来自哪里.是否有任何分析工具可以让您查看jitted功能?

演示代码(如下所示)只是使用非常基本的矩阵乘法来为计算机提供工作.观察到的收益来自:

  1. 更快loop,
  2. 重新编译在编译过程中numpy截获的函数jit,或者
  3. jitnumpy外包通过包装函数执行到低级库的开销较少LINPACK
%matplotlib inline
import numpy as np
from numba import jit
import pandas as pd

#Dimensions of Matrices
i = 100 
j = 100

def pure_python(N,i,j):
    for n in range(N):
        a = np.random.rand(i,j)
        b = np.random.rand(i,j)
        c = np.dot(a,b)

@jit(nopython=True)
def jit_python(N,i,j):
    for n in range(N):
        a = np.random.rand(i,j)
        b = np.random.rand(i,j)
        c = np.dot(a,b)

time_python = []
time_jit = []
N = [1,10,100,500,1000,2000] …
Run Code Online (Sandbox Code Playgroud)

python numpy numba

18
推荐指数
1
解决办法
339
查看次数

pandas Immutable DataFrame

我感兴趣的是一个在程序中用作引用表的Immutable DataFrame,在最初构造之后强制执行read_only属性(在我的情况下是在类def __init__()方法中).

我看到索引对象已冻结.

有没有办法使整个DataFrame不可变?

python immutability pandas

11
推荐指数
4
解决办法
8402
查看次数

Pandas DataFrame对象继承还是对象使用?

我正在构建一个用于处理非常具体的结构化数据的库,我正在Pandas之上构建我的基础架构.目前,我正在为不同的用例编写一堆不同的数据容器,例如CTMatrix for Country x Time Data等,以容纳适用于所有CountryxTime结构化数据的方法.

我目前正在辩论

选项1:对象继承

class CTMatrix(pd.DataFrame):
    methods etc. here
Run Code Online (Sandbox Code Playgroud)

选项2:对象使用

class CTMatrix(object):
    _data = pd.DataFrame

    then use getter, setter methods to control access to _data etc. 
Run Code Online (Sandbox Code Playgroud)

从软件工程的角度来看,这里有一个明显的选择吗?

到目前为止我的想法是:

选项1:

  1. 可以直接在CTMatrix类(如CTmatrix.sort())上使用DataFrame方法,而不必通过_dataOption#2中封装对象上的方法支持它们
  2. 除了可能用本地类方法覆盖的方法之外,Pandas中的更新和新方法是继承的

  1. 使用某些方法的并发症,例如__init__()必须将属性传递给超类super(MyDF, self).__init__(*args, **kw)

选项2:

  1. 更多地控制Class及其行为
  2. Pandas的更新可能更具弹性?

  1. 必须使用getter()或非隐藏属性来使用对象,如数据框,如(CTMatrix.data.sort())

在选项#1中采用这种方法是否还有其他缺点?

python oop inheritance pandas

8
推荐指数
1
解决办法
2448
查看次数

Pandas:使用pd.Series对带有索引的pd.DataFrame进行排序

我试图按另一个按特定顺序排序的系列对DataFrame(axis = 0)进行排序.

示例:DataFrame包含CountryCodes的索引:'AUS','BWA'....(按字母顺序排序)系列包含CountryCodes列表及其相关GDP(按GDP排序)

我可以使用DataFrame.join(系列)没问题,然后对列'GDP'进行排序,然后对del DF ['GDP']进行排序,但有没有一种方法可以直接执行此操作而无需加入结构?

python pandas

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

Pandas:df_left.merge(df_right) 摘要统计

对于 Pandas:df.merge()方法,是他们获取合并摘要统计信息(例如匹配数、不匹配数等)的便捷方法。我知道这些统计数据取决于标志how='inner',但是知道使用内部联接等时“丢弃”了多少内容会很方便。我可以简单地使用:

df = df_left.merge(df_right, on='common_column', how='inner')
set1 = set(df_left[common_column].unique())
set2 = set(df_right[common_column].unique())
set1.issubset(set2)   #True No Further Analysis Required
set2.issubset(set1)   #False
num_shared = len(set2.intersection(set1))
num_diff = len(set2.difference(set1))
# And So on ...
Run Code Online (Sandbox Code Playgroud)

但认为这可能已经实施了。我是否错过了它(即类似report=True会返回的合并new_dataframe以及报告系列或数据框)

python pandas

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

用于Latex Minted包的IPython语法Lexer

是否有一种方法,例如使用铸造的包(https://github.com/gpoore/minted),将语法高亮显示的IPython会话集成到乳胶文档中?

我已经看到了许多使用nbconvert将笔记本转换为tex文件的方法。但是,我不想在笔记本环境中编写整个文档。但是,我想将IPython示例纳入我的论文中。

就像是:

\begin{minted}{ipython ....}
IN[1]: import pandas as pd
...
\end{minted}
Run Code Online (Sandbox Code Playgroud)

latex tex ipython

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

如何让Python类返回一些数据而不是它的对象地址

语境:

使用以下内容:

class test:
    def __init__(self):
        self._x = 2

    def __str__(self):
        return str(self._x)

    def __call__(self):
        return self._x
Run Code Online (Sandbox Code Playgroud)

然后用.创建一个实例 t = test()

我看到如何__str__用于打印:

>>> print t
2
Run Code Online (Sandbox Code Playgroud)

我可以看到如何使用可调用的对象 __call__

>>> t()
2
Run Code Online (Sandbox Code Playgroud)

但是如何让对象返回一个内部属性,以便在输入时:

>>> t
2
Run Code Online (Sandbox Code Playgroud)

代替:

<__main__.test instance at 0x000000000ABC6108>
Run Code Online (Sandbox Code Playgroud)

以类似的方式Pandas打印出DataFrame对象.

python oop methods representation pandas

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

pycountries:将国家/地区名称(可能不完整!)转换为CountryCodes

我正在尝试使用pycountries库将国家/地区名称数据列表转换为ISO3166国家/地区代码(alpha3).我的基本功能如下:

import pycountries as pc

def guess_country(data, output='alpha3', verbose=False):
    #Check Data isn't already in Alpha3
    try:
        country = pc.countries.get(alpha3=data)
        return country
    except: 
        pass  #KeyError Raised, data doesn't directly match
    #Check if Country is Actual CountryName
    try:
        country = pc.countries.get(name=data)
        return country
    except:
        pass #KeyError Raised, data doesn't directly match
     #Check RegExpr of 'data' in an attempt to match
Run Code Online (Sandbox Code Playgroud)

问题是CountryName数据相当脏......一个简短的样本列表

GUATMAL,CHINA T,COLOMB,MEXICO,HG KONG

有没有人知道在给定cntry_name的情况下是否有一个包返回最佳"猜测"匹配?我会很高兴有些人因困难而被拒绝(即中国T - >台湾).如果best_guess返回了关于'猜测'的确定性,那将是很好的.

python pandas

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

matplotlib matshow:如何根据缩放向量更改每行高度?

使用标准 matshow 示例:

from matplotlib.pylab import *
dim = (12,12)
aa = zeros(dim)
for i in range(min(dim)):
    aa[i,i] = i
matshow(aa)
show()
Run Code Online (Sandbox Code Playgroud)

例子
(来源:matplotlib.org

如何控制每一行的高度?

在我的例子中,行索引(即国家)可以用非线性间距(例如GDP)来表示来表示大小,我想通过改变缩放向量的行高来表示。(即,如果有 12 行,那么在均匀分布的情况下,每行的行高将为 [0.083, 0.083, ...., 0.083] 表示的 1/12,那么不均匀的行高可以由任何向量设置,其总和为1)

python matplotlib

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