小编unu*_*tbu的帖子

使用scipy.sparse.csc_matrix替换numpy广播

我的代码中有以下表达式:

a = (b / x[:, np.newaxis]).sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

在哪里b是形状的ndarray (M, N),并且x是形状的ndarray (M,).现在,b实际上是稀疏的,所以对于内存效率我想用a scipy.sparse.csc_matrix或替换csr_matrix.然而,没有实现这种方式的广播(即使保证分割或乘法保持稀疏性)(条目x非零),并且提出a NotImplementedError.有sparse没有我不知道的功能会做我想做的事情?(dot()将沿错误的轴总和.)

python numpy scipy sparse-matrix

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

将一堆数字属性转换为单个分数

这出现了很多,令人惊讶的是似乎没有一个标准的解决方案.假设我有一堆数字属性 - 您可以想象使用它来根据学生/教师比例或污染或诸如此类的一堆组件分数对大学或城市进行排名 - 并希望将它们变成单个分数.

我想采取一些示例并进行插值以获得一致的评分函数.

也许有标准的多维曲线拟合或数据平滑库或某些东西使这简单明了?

更多例子:

  • 将两个血压数字转换为单个分数,以确定血压接近最佳状态
  • 将身体测量值转换为衡量您与理想体质的距离的单一指标
  • 将一组时间(100米短跑等)转换为某项运动的健身分数

math optimization machine-learning curve-fitting multidimensional-array

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

Python - 从DST调整的本地时间到UTC

特定银行在世界所有主要城市都设有分支机构.它们都在当地时间上午10点开放.如果在使用DST的时区内,那么当地的开放时间也遵循DST调整的时间.那么我如何从当地时间到最佳时间.

我需要的是这样的功能to_utc(localdt, tz):

参数:

  • localdt:localtime,作为天真的日期时间对象,经过DST调整
  • tz:TZ格式的时区,例如'Europe/Berlin'

返回:

  • datetime对象,UTC,时区感知

编辑:

最大的挑战是检测本地时间是否处于DST期间,这也意味着它是DST调整的.

对于夏季+1 DST的'Europe/Berlin':

  • 1月1日10:00 => 1月1日9:00 UTC
  • 7月1日10:00 => 7月1日8:00 UTC

对于没有DST的'Africa/Lagos':

  • 1月1日10:00 => 1月1日9:00 UTC
  • 7月1日10:00 => 7月1日9:00 UTC

python timezone utc pytz dst

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

使用twinx时控制跟踪器

在此输入图像描述

右下角的跟踪器(以红色突出显示)报告右侧相对于y轴的y值.

如何让跟踪器报告相对于左侧y轴的y值?

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(6)
numdata = 100
t = np.linspace(0.05, 0.11, numdata)
y1 = np.cumsum(np.random.random(numdata) - 0.5) * 40000
y2 = np.cumsum(np.random.random(numdata) - 0.5) * 0.002

fig = plt.figure()

ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()

ax1.plot(t, y1, 'r-', label='y1')
ax2.plot(t, y2, 'g-', label='y2')

ax1.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

我知道交换y1y2将使跟踪报告Y1值,但这也放置y1在右侧的刻度线,这不是我希望发生的.

ax1.plot(t, y2, 'g-', label='y2')
ax2.plot(t, y1, 'r-', label='y1')
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

带有布尔和多个参数的python多处理

我有一个带有多个参数的函数,其中一些是布尔值.我试图将其传递给多处理,pool.apply_async并希望传递一些带有附加名称的args.

这是我正在使用的示例脚本:

from multiprocessing import Pool

    def testFunc(y, x, calcY=True):
        if calcY == True:
            return y*y
        elif calcY == False:
            return x*x

    if __name__ == "__main__":
        p = Pool()
        res = p.apply_async(testFunc, args = (2, 4, False))
        print res.get()
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我很好奇将其更改为res = p.apply_async(testFunc, args = (2, 4, False)):

res = p.apply_async(testFunc, args = (2, 4, calcY = False))
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

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

类从哪里获得默认的'__dict__'属性?

如果我们比较通过将dir()内置应用于对象超类生成的列表和'dummy',无体类,例如

class A():
    pass
Run Code Online (Sandbox Code Playgroud)

我们发现A类有三个('__dict__', '__module__' and '__weakref__')在对象类中不存在的属性.

A类从哪里继承这些附加属性?

python class

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

Python:在代码块的每一行添加代码例程

我希望在另一个代码块的每一行之后运行一段代码.例如,希望能够在执行函数的下一行之前或之后评估全局变量.

例如,下面我尝试在foo()函数的每一行之前打印'hello' .我认为装饰者可以帮助我,但它需要一些内省功能,以便编辑我的foo()功能的每一行,并在它之前或之后添加我想要的东西.

我正在尝试执行以下操作:

>>> def foo():
...    print 'bar'
...    print 'barbar'
...    print 'barbarbar'

>>> foo()
hello
bar
hello
barbar 
hello
barbarbar
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?将在__code__对象帮助吗?我需要同时进行装饰和内省吗?

编辑:这是此线程的另一个目标示例:

>>> def foo():
...    for i in range(0,3):
...        print 'bar'

>>> foo()
hello
bar
hello
bar 
hello
bar
Run Code Online (Sandbox Code Playgroud)

在这个新案例中,在打印每个"条形图"之前,我想打印一个"你好".

这样做的主要目的是能够在执行下一行代码之前执行另一个函数或测试任何类型的全局变量.想象一下,如果是全局变量True,则代码转到下一行; 而如果全局变量是False,则它会停止函数执行.

编辑:在某种程度上,我正在寻找一种工具,以在另一个代码块中注入代码.

编辑:谢谢unutbu我已经实现了这个代码:

import sys
import time
import threading

class SetTrace(object):
    """
    with SetTrace(monitor):
    """
    def __init__(self, func):
        self.func = func
    def __enter__(self): …
Run Code Online (Sandbox Code Playgroud)

python introspection decorator

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

XPath follow-sibling用于爬行而不返回兄弟

我正在尝试创建一个爬虫来从供应商网站中提取一些我可以针对我们的内部属性数据库进行审核的属性数据,并且是import.io的新手.我观看了一堆视频,但虽然我的语法似乎是正确的,但我的手动xpath覆盖不会返回属性值.我有以下示例html代码:

<table>
<tbody><tr class="oddRow">
<td class="label">&nbsp;Adhesive Type&lrm;</td><td>&nbsp;Epoxy&lrm;
</td>
</tr>
<tr>
<td class="label">&nbsp;Applications&lrm;</td><td>&nbsp;Hard Disk Drive Component Assembly&lrm;
</td>
</tr>
<tr class="oddRow">
<td class="label">&nbsp;Brand&lrm;</td><td>&nbsp;Scotch-Weld&lrm;
</td>
</tr>
<tr>
<td class="label">&nbsp;Capabilities&lrm;</td><td>&nbsp;Sustainability&lrm;
</td>
</tr>
<tr class="oddRow">
<td class="label">&nbsp;Color&lrm;</td><td>&nbsp;Clear Amber&lrm;
</td>
Run Code Online (Sandbox Code Playgroud)

我试图在sibling语句之后写一个xpath来通过import.io爬虫抓取"Color".选择"Color"时的xpath代码是:

//*[@id="attributeList"]/table/tbody/tr[5]/td[1]
Run Code Online (Sandbox Code Playgroud)

我试过用:

//*[@id="attributeList"]/table/tbody/tr/td[.="Color"]/following-sibling::td
Run Code Online (Sandbox Code Playgroud)

但它并没有从表中获取颜色属性值.我不确定它是否与奇数和偶数行类有关?当我看到HTML时,它似乎具有逻辑意义; color是"Color",属性值位于以下td括号中.

xpath crawler4j import.io

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

Python,Pandas:GroupBy属性文档

在Groupby文档中,在页面的该级别:http: //pandas.pydata.org/pandas-docs/stable/groupby.html#groupby-object-attributes

如果向下滚动一下,您会看到它们是所有可用groupby属性的列表:

gb.agg        gb.boxplot    gb.cummin     gb.describe   gb.filter     gb.get_group  gb.height     gb.last       gb.median     gb.ngroups    gb.plot       gb.rank       gb.std        gb.transform
gb.aggregate  gb.count      gb.cumprod    gb.dtype      gb.first      gb.groups     gb.hist       gb.max        gb.min        gb.nth        gb.prod       gb.resample   gb.sum        gb.var
gb.apply      gb.cummax     gb.cumsum     gb.fillna     gb.gender     gb.head       gb.indices    gb.mean       gb.name       gb.ohlc       gb.quantile   gb.size       gb.tail       gb.weight
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到有关这些属性/做什么的文档?使用?in Jupyter不会显示他们的文档.

python pandas jupyter-notebook

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

Wonder-twin power"Zoom to rectangle"激活?

在此输入图像描述

有没有办法在显示matplotlib图时默认自动激活"缩放到矩形"工具?

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-300, 300)
y = x**2-7*x
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plt.plot(x, y)
# Add something here to activate the "Zoom to rectangle" tool?
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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