小编Chr*_*isB的帖子

大熊猫中非唯一索引的性能影响是什么?

从熊猫文档中,我收集到了独特值的索引使得某些操作有效,并且偶尔会容忍非唯一索引.

从外部来看,看起来不是非独特的指数以任何方式被利用.例如,以下ix查询足够慢,似乎正在扫描整个数据帧

In [23]: import numpy as np
In [24]: import pandas as pd
In [25]: x = np.random.randint(0, 10**7, 10**7)
In [26]: df1 = pd.DataFrame({'x':x})
In [27]: df2 = df1.set_index('x', drop=False)
In [28]: %timeit df2.ix[0]
1 loops, best of 3: 402 ms per loop
In [29]: %timeit df1.ix[0]
10000 loops, best of 3: 123 us per loop
Run Code Online (Sandbox Code Playgroud)

(我意识到这两个ix查询不会返回相同的东西 - 它只是一个调用ix非唯一索引的示例显得慢得多)

有没有办法哄骗熊猫使用更快的查找方法,如二元搜索非唯一和/或排序索引?

python indexing performance binary-search pandas

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

按行规范化pandas DataFrame

规范化pandas DataFrame每一行的最常用的方法是什么?规范化列很容易,因此一个(非常难看!)选项是:

(df.T / df.T.sum()).T
Run Code Online (Sandbox Code Playgroud)

熊猫广播规则阻止df / df.sum(axis=1)这样做

python normalization dataframe pandas

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

在PyQt应用程序中嵌入IPython Qt控制台

我想在我正在研究的PyQt应用程序中嵌入一个IPython qt控制台小部件.下面提供的代码(并改编自/sf/answers/685754401/)适用于IPython v0.12.但是,这在IPython v0.13中崩溃self.heartbeat.start()RuntimeError: threads can only be started once.注释掉这一行会显示小部件,但不会响应用户输入.

有谁知道如何实现IPython v0.13的等效功能?

"""
Adapted from
https://stackoverflow.com/a/9796491/1332492
"""
import os
import atexit

from IPython.zmq.ipkernel import IPKernelApp
from IPython.lib.kernel import find_connection_file
from IPython.frontend.qt.kernelmanager import QtKernelManager
from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget
from IPython.config.application import catch_config_error
from PyQt4 import QtCore


class IPythonLocalKernelApp(IPKernelApp):
    DEFAULT_INSTANCE_ARGS = ['']

    @catch_config_error
    def initialize(self, argv=None):
        super(IPythonLocalKernelApp, self).initialize(argv)
        self.kernel.eventloop = self.loop_qt4_nonblocking

    def loop_qt4_nonblocking(self, kernel):
        """Non-blocking version of the ipython qt4 kernel loop"""
        kernel.timer = QtCore.QTimer()
        kernel.timer.timeout.connect(kernel.do_one_iteration) …
Run Code Online (Sandbox Code Playgroud)

python qt ipython pyqt4

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

matplotlib中的Periodic Axes类?

我有一系列横跨经度= 0线的纬度/经度点.我想使用matplotlib Axes类来绘制这些,它们"包裹"水平尺寸,这样当朝向l = 360时,l = 1处的点被绘制为等于l = 361.理想情况下,我也喜欢定义平移/缩放动作的东西,所以我可以交互使用绘图.

我知道可以在matplotlib中定义自定义投影,但我还没有找到实现所有这些功能的圆柱投影的等价物.我宁愿不用basemap.有谁知道这样的事情是否存在?

python projection matplotlib

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

使用以前的非缺失值填写缺失的pandas数据,按键分组

我正在处理像这样的pandas DataFrames:

   id    x
0   1   10
1   1   20
2   2  100
3   2  200
4   1  NaN
5   2  NaN
6   1  300
7   1  NaN
Run Code Online (Sandbox Code Playgroud)

我想用一个具有相同'id'值的行替换每个NAN'x'和之前的非NAN'x':

   id    x
0   1   10
1   1   20
2   2  100
3   2  200
4   1   20
5   2  200
6   1  300
7   1  300
Run Code Online (Sandbox Code Playgroud)

有没有一些光滑的方法来做到这一点,而无需手动循环行?

python nan missing-data pandas data-cleaning

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

@loader_path解决了什么路径?

我很难理解文件中的绝对路径@loader_path.

user@local:~$ otool -L zlib.so 
zlib.so:
    @loader_path/../../libz.1.dylib (compatibility version 1.0.0, current version 1.2.7)
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
Run Code Online (Sandbox Code Playgroud)

我想知道系统在哪里找到libz.1.dylib.

从一些Mac文档:

@ loader_path /此变量替换为包含mach-o二进制文件的目录的路径,该二进制文件包含使用@loader_path的load命令.因此,在每个二进制文件中,@ download_path解析为不同的路径

我猜想这意味着@loader_path只是目标文件(zlib.so)的路径,但这似乎不是真的.

是否有任何命令行实用程序将@loader_path解析为尝试打开库时使用的实际路径?

macos mach-o shared-libraries otool dyld

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

熊猫中的多列分解

pandas factorize函数将一系列中的每个唯一值分配给基于0的顺序索引,并计算每个系列条目所属的索引.

我想pandas.factorize在多列上完成相同的操作:

import pandas as pd
df = pd.DataFrame({'x': [1, 1, 2, 2, 1, 1], 'y':[1, 2, 2, 2, 2, 1]})
pd.factorize(df)[0] # would like [0, 1, 2, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)

也就是说,我想确定数据帧的几列中每个唯一值的元组,为每个列分配一个顺序索引,并计算数据帧中每一行所属的索引.

Factorize仅适用于单列.pandas中有多列等效函数吗?

python enumeration pandas data-cleaning

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

python列表是否有__contains__的等价物来测试身份?

对于内置的python容器(list,tuple等),in操作符等同于any(y == item for item in container)前一种方法更快(更漂亮)的警告:

In [13]: container = range(10000)
In [14]: %timeit (-1 in container)
1000 loops, best of 3: 241 us per loop
In [15]: %timeit any(-1 == item for item in container)
1000 loops, best of 3: 1.2 ms per loop
Run Code Online (Sandbox Code Playgroud)

有相当于any(y is item for item in container)?也就是说,使用的测试is代替==

python identity containment

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

使用NAN替换强制转换非数字numpy数组

考虑数组

x = np.array(['1', '2', 'a'])

绑定转换为float数组会引发异常

x.astype(np.float)
ValueError: could not convert string to float: a
Run Code Online (Sandbox Code Playgroud)

numpy是否提供了任何有效的方法将其强制转换为数值数组,用NAN之类的东西替换非数字值?

或者,是否有一个有效的numpy函数np.isnan,但它也测试非字母元素,如字母?

python numpy nan type-conversion coercion

8
推荐指数
2
解决办法
7901
查看次数

了解numpy memmap的性能

我试图更好地理解numpy的memmap如何处理非常大的文件的视图.下面的脚本打开一个内存映射的2048 ^ 3数组,并复制它的下采样128 ^ 3视图

import numpy as np
from time import time

FILE = '/Volumes/BlackBox/test.dat'
array = np.memmap(FILE, mode='r', shape=(2048,2048,2048), dtype=np.float64)

t = time()
for i in range(5):
    view = np.array(array[::16, ::16, ::16])
t = ((time() - t) / 5) * 1000
print "Time (ms): %i" % t
Run Code Online (Sandbox Code Playgroud)

通常,这打印Time (ms): 80左右.但是,如果我将视图分配更改为

view = np.array(array[1::16, 2::16, 3::16])
Run Code Online (Sandbox Code Playgroud)

并运行三次,我得到以下内容:

Time (ms): 9988
Time (ms): 79
Time (ms): 78
Run Code Online (Sandbox Code Playgroud)

有人理解为什么第一次调用要慢得多吗?

python performance numpy

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

索引到numpy的mgrid

numpy.mgrid用来生成"坐标索引数组"

y, x = np.mgrid[0:3, 0:2]
print x
array([[0, 1],
       [0, 1],
       [0, 1]])
Run Code Online (Sandbox Code Playgroud)

在许多情况下,我会对这些数组进行一些切片(例如x[0, :])并丢弃其余的数据.有时,这些切片比原始阵列小得多,原始阵列的计算成本很高(即np.mgrid[0:512, 0:512, 0:512]).numpy是否提供了[coord[view] for coord in np.mgrid[0:512, 0:512, 0:512]不产生大型中间数组的等价物?

我意识到解决方案对于切片来说是微不足道的[0,:],但我正在寻找一种通用解决方案来处理索引numpy数组的任何有效方法

编辑

有些人要求提供具体的例子view.理想情况下,我希望有一个通用的解决方案来处理索引ndarray的任何有效方法.以下是上述3x2阵列的一些具体示例:

1) view = (1, slice(None, None, 2))

2) view = (np.array([0,1]), np.array([0, 1]))

3) view = np.array([[False, False], [False, True], [False, False]])

我正在寻找像这样的功能

def mgrid_with_view(array_shape, view)
    ...
Run Code Online (Sandbox Code Playgroud)

返回相当于[o[view] for o in np.indices(array_shape)]没有不必要的计算或内存.

python indexing numpy

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

Qt4:着色QIcon

QIcon在Qt4/PyQt4中将颜色色调应用于a的最简单方法是什么?我有几个单色QPixmaps,我想根据相关对象的属性重新着色.

python qt4 tint pyqt4 qicon

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

spray-json:序列化一般特征

JsonWriter[T]当调用toJson一个实例时,spray-json依赖于一个范围内的隐式存在T.

假设我有一个具有几个具体子类型的特征,每个子类型都有一个JsonWriter:

trait Base
case class Foo(a: Int) extends Base
case class Bar(a: Int, b: Int) extends Base
implicit val FooFormat = jsonFormat1(Foo)
implicit val BarFormat = jsonFormat2(Bar)

def go(o: Base) = {
    o.toJson
}
Run Code Online (Sandbox Code Playgroud)

go不编译,因为有一个为基地没有JsonWriter,即使对所有具体的子类型的作家.

如何重新组织此代码,以便Base使用适当的json格式化程序的通用函数?

scala implicit traits spray-json

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