相关疑难解决方法(0)

254
推荐指数
3
解决办法
22万
查看次数

Python:将列表切成n个近似等长的分区

我正在寻找一种快速,干净,pythonic的方法来将列表划分为n个几乎相等的分区.

partition([1,2,3,4,5],5)->[[1],[2],[3],[4],[5]]
partition([1,2,3,4,5],2)->[[1,2],[3,4,5]] (or [[1,2,3],[4,5]])
partition([1,2,3,4,5],3)->[[1,2],[3,4],[5]] (there are other ways to slice this one too)
Run Code Online (Sandbox Code Playgroud)

这里有几个答案迭代列表切片非常接近我想要的,除了它们专注于列表的大小,我关心列表的数量(其中一些也填充无).显然,这些很容易转换,但我正在寻找最佳实践.

同样,人们在这里指出了很好的解决方案如何将列表拆分成大小均匀的块?对于一个非常类似的问题,但我对分区的数量比特定大小更感兴趣,只要它在1以内.再次,这是可以轻易转换的,但我正在寻找最佳实践.

python list slice

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

高效的双重产品

考虑两个ndarrays长度n,arr1arr2.我正在计算以下产品总数,并按时num_runs进行基准测试:

import numpy as np
import time

num_runs = 1000
n = 100

arr1 = np.random.rand(n)
arr2 = np.random.rand(n)

start_comp = time.clock()
for r in xrange(num_runs):
    sum_prods = np.sum( [arr1[i]*arr2[j] for i in xrange(n) 
                         for j in xrange(i+1, n)] )

print "total time for comprehension = ", time.clock() - start_comp

start_loop = time.clock()
for r in xrange(num_runs):
    sum_prod = 0.0
    for i in xrange(n):
        for j in xrange(i+1, n):
            sum_prod …
Run Code Online (Sandbox Code Playgroud)

python numpy

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