小编Mai*_*Mai的帖子

Pandas:使用namedtuple列表初始化数据框架的简洁方法

我是熊猫的新手,所以也许我会问一个非常愚蠢的问题.通常,pandas中数据帧的初始化将是列式的,我在其中放入了具有列名称的键和具有相同长度的列表式对象的值的dict.

但是我想在没有动态连接行的情况下初始化行.假设我有一个namedtuple列表,是否有一个优化的操作,它将直接从它给我一个熊猫数据框?

非常感谢

dataframe python-2.7 pandas

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

Doc2Vec和PySpark:关于DeepDist的Gensim Doc2vec

我在看的DeepDist(链接)模块和思维将其联合GensimDoc2VecAPI来训练上段载体PySpark.该链接实际上如何做以下干净的例子提供GensimWord2Vec模型:

from deepdist import DeepDist
from gensim.models.word2vec import Word2Vec
from pyspark import SparkContext

sc = SparkContext()
corpus = sc.textFile('enwiki').map(lambda s: s.split())

def gradient(model, sentences):  # executes on workers
    syn0, syn1 = model.syn0.copy(), model.syn1.copy()   # previous weights
    model.train(sentences)
    return {'syn0': model.syn0 - syn0, 'syn1': model.syn1 - syn1}

def descent(model, update):      # executes on master
    model.syn0 += update['syn0']
    model.syn1 += update['syn1']

with DeepDist(Word2Vec(corpus.collect()) as dd:
    dd.train(corpus, gradient, descent) …
Run Code Online (Sandbox Code Playgroud)

gensim apache-spark word2vec pyspark

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

Python:更快的索引操作

我有以下片段,它提取序列中所有唯一值(hashable)的data索引,与规范索引一样,并将它们作为列表存储在字典中:

from collections import defaultdict
idx_lists = defaultdict(list)
for idx, ele in enumerate(data):
    idx_lists[ele].append(idx)
Run Code Online (Sandbox Code Playgroud)

这对我来说是一个很常见的用例.而且我的代码执行时间的90%花在了这几行上.该部分在执行期间传递超过10000次,len(data)每次运行时约为50000到100000次.独特元素的数量大致为50到150.

有没有更快的方法,也许是矢量化/ c扩展(例如numpypandas方法),实现同样的事情?

非常感谢.

python indexing performance numpy pandas

6
推荐指数
2
解决办法
180
查看次数

Python:按索引删除子字符串

我有以下相当简单的片段:

def delete_substring_blocks(s, blocks):                                                                             
  '''                                                                                                                   
      s: original input string                                                                                   
      blocks: list of indices (start, end) to be deleted                                                                

      return string `out` where blocks are deleted from s                                                      
  '''                                                                                                                   
  out = ''                                                                                                              
  p = 0                                                                                                                 
  for start, end in blocks:                                                                                             
      out += s[p:start]                                                                                               
      p = end                                                                                                           
  out += s[p:]                                                                                                        
  return out
Run Code Online (Sandbox Code Playgroud)

此函数接受一个字符串ss[start:end]从 中删除所有内容s,其中(start, end)在列表中给出了索引对blocks

某处是否有一个内置函数可以做同样的事情?


更新:我的代码中有一个假设:

  1. 块按升序按第一个索引排序(由list.sort()就地完成)

至于块是否可以重叠,在我的用例中,我确保它们在调用函数之前不会重叠。但为了好玩,我们也可以假设他们这样做。

python string

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

Python:对一个函数尝试 3 次,直到全部失败

我在Python2.7写的,遇到如下情况。我想尝试调用一个函数三次。如果所有 3 次都引发错误,我将引发我得到的最后一个错误。如果任何一个调用成功,我将停止尝试并立即继续。

这是我现在所拥有的:

output = None
error = None
for _e in range(3):
    error = None
    try:
        print 'trial %d!' % (_e + 1)
        output = trial_function()
    except Exception as e:
        error = e
    if error is None:
        break
if error is not None:
    raise error
Run Code Online (Sandbox Code Playgroud)

是否有更好的片段可以实现相同的用例?

python error-handling design-patterns

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

CUDA编程:如何让我的Legacy GPU与CUDA 7.5工具包配合使用?

Layman在这里试图学习新的东西.问这个问题太无聊了.如果您不想阅读,请跳到最后一行.这是故事:

信不信由你.我GeForce 8800 GTS在我当前的桌面上工作,这个桌面只是为了工作而不是用于游戏.现在我正在使用DVI-HDMI线缆连接到我的HDTV.我越是想到它,它就越令人惊讶它的工作原理.

几天前,会弹出一条通知,提示我的GPU更新驱动程序.令我惊喜的是,2016年仍在Windows 10上支持这一传统作品.NIC job NVIDIA.然后我想,"我能和这个孩子一起做CUDA编程吗?"

我已经在不同的主板上使用了多年,并想过多次升级它.但我不再玩游戏,所以我觉得不需要.现在,如果它将在接下来的几个月中支持和激励我在CUDA编程中的学习和研究,那就像价值的无限增加(通过零电流值标准化:D)所以我决定冒险在NVIDIA的网站上.

在这个完美的世界里有希望.我找到了支持我的宝宝的工具包,但它是CUDA 1.1 toolkits2007 年的第二个版本.回顾CUDA 7.5 toolkits2016年的现代第19版(),您可能会问:为什么不安装最新版本?

因为显然CUDA 7.5 toolkits安装人员不承认GeForce 8800 GTS,没有人责备它.它抱怨说

此图形驱动程序找不到兼容的图形硬件.您可以继续安装,但可能无法使用此驱动程序运行CUDA应用程序.使用比此工具包更新的图形硬件可能会发生这种情况.在这种情况下,建议您保留现有驱动程序并安装CUDA工具包的其余部分.

好吧,我目前的图形驱动程序是GeForce 341.95 Driver2016年3月发布的.它正在使用我的GPU来调整高清电视上过度扫描的桌面的大小,所以我认为它运行得很好.唯一的问题是我的硬件不是太新,但太旧了.

我试图让第一代支持CUDA的GPU Geforce 8800 GTS与Windows 10上的CUDA 7.5工具包一起使用.有什么建议吗?

非常感谢.

windows cuda gpu driver

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

几何平均值的安全计算

我正在寻找一个理由选择以下方法之一来计算一系列浮点的几何平均值x:

  1. 取每个的第n个根x,然后将它们全部相乘
  2. 将所有这些相乘,然后取第n个根

我听说过浮点数,乘法和除法输入的信息少于加法和减法.因此,我不考虑总和指数技巧.

我应该通过1或2计算几何平均值,为什么?


更新1,以回应评论:

所有x小于1且精度为double.它们的数量级在10 ^ -1到10 ^ -6之间.请假设最常用的计算第n个根的方法,因为我使用的是编程语言的内置函数.由于所有值都小于1,我担心下溢(?)而不是溢出.您可以假设x系列的长度为10 ^ 8的顺序

floating-point precision average numerical-methods

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