小编Bou*_*oud的帖子

加权选择简短

如果我在列表中有一组项目.我想根据另一个权重列表从该列表中进行选择.

例如我的收藏是['one', 'two', 'three']和权重[0.2, 0.3, 0.5],我希望这个方法在所有抽奖的大约一半中给我'三'.

最简单的方法是什么?

python numpy

46
推荐指数
4
解决办法
4万
查看次数

在Python中格式化一个带有最大小数位数且不带额外零填充的浮点数

我需要在python中做一些小数位格式化.优选地,浮点值应始终至少显示起始0和小数点后一位.例:

Input: 0
Output: 0.0
Run Code Online (Sandbox Code Playgroud)

具有更多小数位的值应继续显示它们,直到它变为4.所以:

Input: 65.53
Output: 65.53

Input: 40.355435
Output: 40.3554
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用{0.4f}将其打印到小数点后四位,但它会填充不需要的0.是否有格式化代码告诉它打印出一定数量的小数,但如果没有数据则将它们留空?我相信C#通过以下方式完成此任务:

floatValue.ToString("0.0###")
Run Code Online (Sandbox Code Playgroud)

#符号代表可以留空的地方.

python padding string-formatting

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

使用numpy进行多处理会使Python在OSX上意外退出

当遇到numpy运行多处理时,我遇到了一个问题,即Python意外退出.我已经解决了这个问题,所以我现在可以确认在运行下面描述的代码时多处理工作是完美的:

import numpy as np
from multiprocessing import Pool, Process
import time
import cPickle as p

def test(args):
    x,i = args
    if i == 2:
        time.sleep(4)
    arr = np.dot(x.T,x)
    print i

if __name__ == '__main__':
    x = np.random.random(size=((2000,500)))
    evaluations = [(x,i) for i in range(5)]
    p = Pool()
    p.map_async(test,evaluations)
    p.close()
    p.join()
Run Code Online (Sandbox Code Playgroud)

当我尝试评估下面的代码时会出现问题.这使Python意外退出:

import numpy as np
from multiprocessing import Pool, Process
import time
import cPickle as p

def test(args):
    x,i = args
    if i == 2:
        time.sleep(4)
    arr = np.dot(x.T,x) …
Run Code Online (Sandbox Code Playgroud)

python macos numpy multiprocessing

13
推荐指数
2
解决办法
2873
查看次数

如何将自定义函数应用于每行的pandas数据框

我想应用自定义函数并创建一个名为population2050的派生列,该列基于我的数据框中已存在的两列.

import pandas as pd
import sqlite3
conn = sqlite3.connect('factbook.db')
query = "select * from facts where area_land =0;"
facts = pd.read_sql_query(query,conn)
print(list(facts.columns.values))

def final_pop(initial_pop,growth_rate):
    final = initial_pop*math.e**(growth_rate*35)
    return(final)

facts['pop2050'] = facts['population','population_growth'].apply(final_pop,axis=1)
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我收到一个错误.我没有正确使用'apply'功能吗?

python pandas

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

如何检索通过multiprocessing.Process调用的函数返回的多个值

我有这样的场景:

for each in content :
     pdf_output,job_id=createpdf(each)
     if pdf_output : 
        pdf_output = pdf_output + pdf_output
Run Code Online (Sandbox Code Playgroud)

我试图将整个过程并行化.这样的事情

 jobs=[]
    for each in content : 
       jobs.append(multiprocessing.Process(target=self.createpdf, args=(content)))

    for each in jobs :
         jobs.start()
    for each in jobs :
         jobs.join()
Run Code Online (Sandbox Code Playgroud)

我如何明智地完成任务

if pdf_output : 
            pdf_output = pdf_output + pdf_output
Run Code Online (Sandbox Code Playgroud)

每个工作?如何检索createpdf发送的2个retun值并对其进行处理?我认为multiprocessing.Queue是一个线索,但我该如何实现呢?

python multiprocessing

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

使用scrapyd一次运行多个scrapy蜘蛛

我正在使用scrapy进行一个项目,我想要刮掉一些网站 - 可能是数百个 - 我必须为每个网站编写一个特定的蜘蛛.我可以使用以下方法在部署到scrapyd的项目中安排一个蜘蛛:

curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider2
Run Code Online (Sandbox Code Playgroud)

但是如何一次安排项目中的所有蜘蛛呢?

所有帮助非常感谢!

python screen-scraping scrapy scrapyd

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

使用Python中的尾随逗号连接或打印列表元素

我有一个列表:

>>> l = ['1', '2', '3', '4']
Run Code Online (Sandbox Code Playgroud)

如果我使用join语句,

>>> s = ', '.join(l)
Run Code Online (Sandbox Code Playgroud)

会给我输出为:

'1, 2, 3, 4'
Run Code Online (Sandbox Code Playgroud)

但是,我要做的事如果我想要输出为:

'1, 2, 3, 4,'
Run Code Online (Sandbox Code Playgroud)

(我知道我可以使用字符串连接,但我想知道一些更好的方法)

.

python string join list

9
推荐指数
3
解决办法
2万
查看次数

python:奇怪的列表元素组合

我有以下两个清单:

l1 = [1, 2, ,3]  
l2 = [x, y]  
Run Code Online (Sandbox Code Playgroud)

并且希望所有5个元素的列表l1仅保持顺序.说:

[x, y, 1, 2, 3],  
[x, 1, y, 2, 3],  
[x, 1, 2, y, 3],  
[x, 1, 2, 3, y],  
[y, x, 1, 2, 3],  
[y, 1, x, 2, 3],  
[y, 1, 2, x, 3],  
[y, 1, 2, 3, x],  
[1, x, y, 2, 3],  
[1, x, 2, y, 3],  
[1, x, 2, 3, y],  
[1, y, x, 2, 3],  
[1, y, 2, x, 3],  
[1, y, …
Run Code Online (Sandbox Code Playgroud)

python combinations list

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

如何为使用生成器参数构造的dict()添加额外的键值对?

可以使用生成器创建字典(PEP-289):

dict((h,h*2) for h in range(5))
#{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
Run Code Online (Sandbox Code Playgroud)

在语法上可以在同一个dict()调用中添加一些额外的键值对吗?以下语法不正确,但更好地解释了我的问题:

dict((h,h*2) for h in range(5), {'foo':'bar'})
#SyntaxError: Generator expression must be parenthesized if not sole argument
Run Code Online (Sandbox Code Playgroud)

换句话说,是否可以在单个dict()调用中构建以下内容:

{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 'foo': 'bar' }
Run Code Online (Sandbox Code Playgroud)

python syntax

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

脚本从网页中提取数据

我希望提取网页上呈现的数据的某些部分.我可以从页面中提取整个数据,并使用下面的代码将其保存在文本文件(RAW)中.

curl http://webpage -o "raw.txt"
Run Code Online (Sandbox Code Playgroud)

只是想知道是否还有其他选择和优势.

python

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