# Can we have a faster way to create an array?

Is there a faster way to create the following array? I need to create an array for further calculation. It takes a long time to start up the array. Basically I need to create a series or array with the values ​​of the norm.ppf function of size 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)
```

```
+3

source to share

You are not using Pandas for any purpose other than Series being a container, so it would be faster to cut Pandas out of this calculation.

Presumably `norm`

- `scipy.stats.norm`

. If so, the `norm.ppf`

first argument could be a numpy array. So it's much faster to call `norm.ppf`

once on a 4000 NumPy array than to call `norm.ppf`

4000 times on a float:

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

```

``````In : %timeit lts = norm.ppf(np.random.random(4000), 10, 5).astype('int')
100 loops, best of 3: 2.51 ms per loop

In : %%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
```

```
+6

source

All Articles