I have an array `X`

and a list `T2`

. I want to create a new array `Xnew`

such that elements of `X`

are placed according to locations specified in `T2`

. I present the current and expected outputs.

```
import numpy as np
X=np.array([4.15887486e+02, 3.52446375e+02, 2.81627790e+02, 1.33584716e+02,
6.32045703e+01, 2.07514659e+02, 1.00000000e-24])
T2=[0, 3, 5, 8, 9, 10, 11]
def make_array(indices, values):
rtrn = np.zeros(np.max(indices) + 1, dtype=values.dtype)
rtrn[indices] = values
return
Xnew = np.array([make_array(Ti, Xi) for Ti, Xi in zip([T2], X)], dtype=object)
print("New X =",[Xnew])
```

The current output is

```
New X = [array([None], dtype=object)]
```

The expected output is

```
[array([[4.15887486e+02, 0.0, 0.0, 3.52446375e+02, 0.0,
2.81627790e+02, 0.0, 0.0, 1.33584716e+02,
6.32045703e+01, 2.07514659e+02, 1.00000000e-24]],
dtype=object)]
```

### >Solution :

You basically have what you need, but you are calling your function in a very weird way.

The function works with numpy arrays / lists as input, you don’t need to put in individual elements.

```
X = np.arange(5)
ind = np.asarray([1, 4, 3, 2, 10])
def make_array(indices, values):
rtrn = np.zeros(np.max(indices) + 1, dtype=values.dtype)
rtrn[indices] = values
return rtrn
make_array(ind, X) # array([0, 0, 3, 2, 1, 0, 0, 0, 0, 0, 4])
```