小编ale*_*inn的帖子

有没有比dict()更快的东西?

我需要一种更快的方式来存储和访问大约3GB的k:v对.其中kstringinteger并且v是一个np.array(),可以是不同的形状.有没有任何对象,比标准python dict在存储和访问这样的表时更快?例如,a pandas.DataFrame

到目前为止,我已经了解python dict是一个相当快速的哈希表实现,有什么比我的具体案例更好的?

python dictionary numpy python-3.x python-internals

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

iPython/Jupyter Notebook和Pandas,如何在for循环中绘制多个图形?

考虑以下在iPython/Jupyter Notebook中运行的代码:

from pandas import *
%matplotlib inline

ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]

for y_ax in ys:
    ts = Series(y_ax,index=x_ax)
    ts.plot(kind='bar', figsize=(15,5))
Run Code Online (Sandbox Code Playgroud)

我希望有2个单独的图作为输出,相反,我将两个系列合并在一个单独的图中.这是为什么?如何获得保持for循环的两个单独的图?

python plot matplotlib pandas jupyter-notebook

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

Pandas df.iterrow()并行化

我想并行化以下代码:

for row in df.iterrows():
    idx = row[0]
    k = row[1]['Chromosome']
    start,end = row[1]['Bin'].split('-')

    sequence = sequence_from_coordinates(k,1,start,end) #slow download form http

    df.set_value(idx,'GC%',gc_content(sequence,percent=False,verbose=False))
    df.set_value(idx,'G4 repeats', sum([len(list(i)) for i in g4_scanner(sequence)]))
    df.set_value(idx,'max flexibility',max([item[1] for item in dna_flex(sequence,verbose=False)]))
Run Code Online (Sandbox Code Playgroud)

我试图使用,multiprocessing.Pool()因为每行可以独立处理,但我无法弄清楚如何共享DataFrame.我也不确定这是与pandas进行并行化的最佳方法.有帮助吗?

python multiprocessing pandas

20
推荐指数
3
解决办法
9722
查看次数

Pandas df.describe(),是否有可能在没有移调的情况下按行进行?

Pandas df.describe()是一个非常有用的方法来概述你的df.但是,它按列描述,我希望对行进行概述.有没有办法让它在没有转置df的情况下"by_row"工作?

python pandas

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

查找字符串中最重复(不是最常见)序列的算法(也称为串联重复)

我正在寻找能够在字符串中找到最重复序列的算法(可能在Python中实现).对于REPETITIVE,我指的是在不中断的情况下反复重复的任何字符组合(串联重复).

我寻找的算法一样的"寻找最常见的词"之一.实际上,重复块不需要是字符串中最常见的单词(substring).

例如:

s = 'asdfewfUBAUBAUBAUBAUBAasdkBAjnfBAenBAcs'
> f(s)
'UBAUBAUBAUBAUBA' #the "most common word" algo would return 'BA'
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道如何解决这个问题.非常欢迎任何帮助.


UPDATE

一个额外的例子来澄清我希望返回具有最多重复次数的序列,无论其基本构建块是什么.

g = 'some noisy spacer'
s = g + 'AB'*5 + g + '_ABCDEF'*2 + g + 'AB'*3
> f(s)
'ABABABABAB' #the one with the most repetitions, not the max len
Run Code Online (Sandbox Code Playgroud)

@rici的例子:

s = 'aaabcabc'
> f(s)
'abcabc'

s = 'ababcababc'
> f(s)
'ababcababc' #'abab' would also be a solution here
             # since it is repeated …
Run Code Online (Sandbox Code Playgroud)

python parsing sequence python-3.x

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

只使用标准库编写Python 2和3兼容代码的最佳方法

我试图使我的一些代码Python 2和3兼容.

目前,我与像功能挣扎range/ xrange等方法dict.items/ dict.iteritems.理想情况下,我希望我的代码能够在Python 3.x中使用前者,在Python 2.x中使用后者.

使用if/ else在我看来是实现这个的最简单的方法:

if py >= 3:
    for item in array.items()
    ...
else:
    for item in array.iteritems()
Run Code Online (Sandbox Code Playgroud)

但是,这样做会导致大量重复和丑陋的代码.有没有更好的方法只使用标准库?我可以在代码开头的某个地方说明总是使用range/ dict.itemsif py >= 3xrange/ dict.iteritems如果没有?

可以这样做吗?

if py < 3:
    use xrange as range
Run Code Online (Sandbox Code Playgroud)

我环顾四周,我知道有几个库,比如六个未来化的库,用于解决这个问题.但是我正在使用只运行python 2.7的服务器,我不允许在其上安装任何额外的库.我有一些我想使用的python3代码,但我也想只维护一个版本的代码.

python compatibility python-2.7 python-3.x

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

如何检查Pandas中列的任何值是否在一个范围内(在两个值之间)?

我有一个DataFrame,我想检查一列的任何值(v)是否满足x<=v<=y.

equal = any(df['columnX'] == value) # No problems here
in_between = any(x <= df['columnX'] <= y) # ValueError :/
Run Code Online (Sandbox Code Playgroud)

我得到的错误是ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 但我any()已经在使用了!

那么这里的问题是什么?为什么它适用==但不适用x<=v<=y

python any pandas

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

如何在Nim中对序列进行排序?

我有一个由列表推导生成的序列如下:

var a_bigram_list = lc[a[i..i+2] | (i <- 0..<len(a)), string]
Run Code Online (Sandbox Code Playgroud)

现在,我想对它进行排序,但sort(a_bigram_list)会导致以下编译错误

Error: type mismatch: got (seq[string])
but expected one of: 
proc sort[A, B](t: OrderedTableRef[A, B]; cmp: proc (x, y: (A, B)): int)
proc sort[A, B](t: var OrderedTable[A, B]; cmp: proc (x, y: (A, B)): int)
proc sort[A](t: CountTableRef[A])
proc sort[A](t: var CountTable[A])
proc sort[T](a: var openArray[T]; cmp: proc (x, y: T): int; order = SortOrder.Ascending)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以对序列进行排序吗?或者我需要将其转换为数组?如果是这样,有没有办法从lc获取数组?

sorting list-comprehension nim-lang

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

PyPy中是否有sys.getsizeof()的替代方法?

我正在尝试使用PyPy运行Python(2.7)脚本,但是遇到以下错误:

TypeError: sys.getsizeof() is not implemented on PyPy.

A memory profiler using this function is most likely to give results
inconsistent with reality on PyPy.  It would be possible to have
sys.getsizeof() return a number (with enough work), but that may or
may not represent how much memory the object uses.  It doesn't even
make really sense to ask how much *one* object uses, in isolation
with the rest of the system.  For example, instances have maps,
which are often …
Run Code Online (Sandbox Code Playgroud)

python pypy sizeof

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

如何使用Python 3.8 alpha中引入的赋值表达式重写此简单循环?

在我看来,将经典的while循环与Assignment-expressions -loops互换可以使代码看起来很棒不是那么简单。

考虑example1

>>> a = 0
>>> while (a := a+1) < 10:
...     print(a)
... 
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

example2

>>> a = 0
>>> while a < 10:
...     print(a)
...     a += 1
... 
0
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

您将如何修改example1以具有相同的输出(不跳过0example2?(a = 0当然,无需更改)

python python-3.8 python-assignment-expression

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