Question: I have a list like this:

```
l=[(1,2),(3,4)]

```

I want to convert it to a numpy array,and keep array item type as tuple:

```
array([(1,2),(3,4)])

```

but numpy.array(l) will give:

```
array([[1,2],[3,4)]])

```

and item type has been changed from tuple to numpy.ndarray,then I specified item types

```
numpy.array(l,numpy.dtype('float,float'))

```

this gives:

```
 array([(1,2),(3,4)])

```

but item type isn't tuple but numpy.void,so question is:

```
 how to convert it to a numpy.array of tuple,not of numpy.void? 

```

Answer: 
You can have an array of `object` dtype, letting each element of the array being a tuple, like so -

```
out = np.empty(len(l), dtype=object)
out[:] = l

```

Sample run -

```
In [163]: l = [(1,2),(3,4)]

In [164]: out = np.empty(len(l), dtype=object)

In [165]: out[:] = l

In [172]: out
Out[172]: array([(1, 2), (3, 4)], dtype=object)

In [173]: out[0]
Out[173]: (1, 2)

In [174]: type(out[0])
Out[174]: tuple

```
For some reason you can't simply do this if you're looking for a single line of code (even though Divakar's answer ultimately leaves you with `dtype=object`):

```
np.array([(1,2),(3,4)], dtype=object)

```

Instead you have to do this:

```
np.array([(1,2),(3,4)], dtype="f,f")

```

`"f,f"` signals to the array that it's receiving tuples of two floats (or you could use `"i,i"` for integers). If you wanted, you could cast back to an object by adding `.astype(object)` to the end of the line above).