我试图找到一个非常大的2D numpy数组的一个维度上的最小数组索引.我发现这很慢(已经尝试过加速瓶颈,这只是一个很小的改进).但是,采用直线最小值似乎要快一个数量级:
import numpy as np
import time
randvals = np.random.rand(3000,160000)
start = time.time()
minval = randvals.min(axis=0)
print "Took {0:.2f} seconds to compute min".format(time.time()-start)
start = time.time()
minindex = np.argmin(randvals,axis=0)
print "Took {0:.2f} seconds to compute argmin".format(time.time()-start)
Run Code Online (Sandbox Code Playgroud)
在我的机器上输出:
Took 0.83 seconds to compute min
Took 9.58 seconds to compute argmin
Run Code Online (Sandbox Code Playgroud)
有没有理由说argmin这么慢?有没有什么方法可以加快到与min相当的速度?
我正在尝试将函数应用于 numpy 数组中的每一对列(每列都是一个人的基因型)。
例如:
[48]: g[0:10,0:10]
array([[ 1, 1, 1, 1, 1, 1, 1, 1, 1, -1],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[ 1, 1, 1, 1, 1, 1, -1, 1, 1, 1],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, -1],
[-1, -1, 0, -1, -1, -1, -1, -1, …Run Code Online (Sandbox Code Playgroud)