gpt4 book ai didi

python - Numpy优化

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:51 27 4
gpt4 key购买 nike

我有一个根据条件赋值的函数。我的数据集大小通常在 30-50k 范围内。我不确定这是否是使用 numpy 的正确方法,但是当它超过 5k 个数字时,它会变得非常慢。有没有更好的方法让它更快?

import numpy as np 
N = 5000; #dataset size
L = N/2;
d=0.1; constant = 5;

x=constant+d*np.random.random(N);

matrix = np.zeros([L,N]);

print "Assigning matrix"
for k in xrange(L):
for i in xrange(k+1):
matrix[k,i] = random.random()

for i in xrange(k+1,N-k-1):
if ( x[i] > x[i-k-1] ) and ( x[i] > x[i+k+1] ):
matrix[k,i] = 0
else:
matrix[k,i] = random.random()

for i in xrange(N-k-1,N):
matrix[k,i] = random.random()

最佳答案

如果您使用 for 循环,您将失去 numpy 的速度。获得速度的方法是使用 numpys 函数和向量化操作。有没有一种方法可以创建随机矩阵:

matrix = np.random.randn(L,k+1)

然后对这个矩阵做些什么来得到你想要的 0 位置?您能否详细说明将条目设置为0的条件?例如,您可以创建矩阵然后执行以下操作:

matrix[matrix > value]

保留所有高于阈值的值。如果条件可以表示为一些 bool 索引器或算术运算,则可以加快速度。如果它必须在 for 循环中(即它取决于它周围的值作为循环周期)它可能无法被矢量化。

关于python - Numpy优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com