Python 我们可以用更快的方法创建阵列吗?

Python 我们可以用更快的方法创建阵列吗?,python,arrays,numpy,pandas,series,Python,Arrays,Numpy,Pandas,Series,有没有更快的方法来创建以下数组?我需要创建一个数组以便进一步计算。 此阵列创建需要花费大量时间才能运行。基本上,我需要创建一个系列或数组,其值为norm.ppf函数,大小为4000 nrow = 4000 lts = pandas.Series(numpy.zeros(nrow)) lts = lts.apply(lambda x : norm.ppf(random.random(),10),5)) lts = np.asarray(lts, int) 除了将系列用作容器之外,您没有将

有没有更快的方法来创建以下数组?我需要创建一个数组以便进一步计算。 此阵列创建需要花费大量时间才能运行。基本上,我需要创建一个系列或数组,其值为norm.ppf函数,大小为4000

 nrow = 4000
 lts = pandas.Series(numpy.zeros(nrow))
 lts = lts.apply(lambda x : norm.ppf(random.random(),10),5))
 lts = np.asarray(lts, int)

除了将系列用作容器之外,您没有将熊猫用于任何其他目的,因此将熊猫从计算中剔除会更快

大概,
norm
scipy.stats.norm
。如果是这样,
norm.ppf
的第一个参数可以是numpy数组。因此,在4000大小的NumPy数组上调用
norm.ppf
一次要比在float上调用
norm.ppf
4000次快得多:

lts = norm.ppf(np.random.random(4000), 10, 5).astype('int')


5
打算做什么?
x
是用来做某事的吗?在norm.ppf(概率、平均值、标准偏差)中,10是平均值,5是标准差。我的代码将对lts的每个元素应用norm.ppf。但是括号放错了位置,所以代码在语法上无效,
5
不是
norm.ppf
的参数。(见
在10之后。)非常感谢@unutbu。对没有得到的人的解释,lts=norm.ppf(np.random.random(4000),10,5)。astype('int')将创建4000个随机变量并计算norm。是的,这就是想法。
In [120]: %timeit lts = norm.ppf(np.random.random(4000), 10, 5).astype('int')
100 loops, best of 3: 2.51 ms per loop

In [121]: %%timeit
   .....: lts_orig = pd.Series(np.zeros(nrow))
   .....: lts_orig = lts_orig.apply(lambda x : norm.ppf(random.random(),10, 5))
   .....: lts_orig = np.asarray(lts_orig, int)
   .....: 
1 loops, best of 3: 572 ms per loop