Vermillion - 9 months ago 53

Python Question

I'm a Matlab user trying to switch to Python.

Using Numpy, how do I fill in a matrix inside a

`for`

For example, the matrix has 2 columns, and each iteration of the

`for`

In Matlab, this would be:

`n = 100;`

matrix = nan(n,2); % Pre-allocate matrix

for i = 1:n

matrix(i,:) = [3*i, i^2];

end

Answer

First you have to install numpy using

```
$ pip install numpy
```

Then the following should work

```
import numpy as np
n = 100
matrix = np.zeros((n,2)) # Pre-allocate matrix
for i in range(1,n):
matrix[i,:] = [3*i, i**2]
```

A faster alternative:

```
col1 = np.arange(3,3*n,3)
col2 = np.arange(1,n)
matrix = np.hstack((col1.reshape(n-1,1), col2.reshape(n-1,1)))
```

Even faster, as Divakar suggested

```
I = np.arange(n)
matrix = np.column_stack((3*I, I**2))
```

Source (Stackoverflow)