bli - 1 year ago 62
Python Question

# How to make a numpy array from an array of arrays?

I'm experimenting in

`ipython3`
, where I created an array of arrays:

``````In [105]: counts_array
Out[105]:
array([array([ 17,  59, 320, ...,   1,   7,   0], dtype=uint32),
array([ 30,  71, 390, ...,  12,  20,   6], dtype=uint32),
array([  7, 145, 214, ...,   4,  12,   0], dtype=uint32),
array([ 23, 346, 381, ...,  15,  19,   5], dtype=uint32),
array([ 51,  78, 270, ...,   3,   0,   2], dtype=uint32),
array([212, 149, 511, ...,  19,  31,   8], dtype=uint32)], dtype=object)

In [106]: counts_array.shape
Out[106]: (6,)

In [107]: counts_array[0].shape
Out[107]: (1590,)
``````

I would like to obtain a plain
`shape=(6, 1590), dtype=uint32`
array from this monster I created.

How can I do that?

You can use `np.vstack` -

``````np.vstack(counts_array)
``````

Another way with `np.concatenate` -

``````np.concatenate(counts_array).reshape(len(counts_array),-1)
``````

Sample run -

``````In [23]: a
Out[23]:
array([array([68, 92, 84, 35, 14, 71, 55, 40, 21, 41]),
array([30, 90, 52, 64, 86, 68, 61, 85, 26, 98]),
array([98, 64, 23, 49, 13, 17, 52, 96, 97, 19]),
array([54, 26, 25, 22, 95, 77, 20, 73, 22, 80]),
array([15, 84, 91, 54, 25, 21, 37, 19, 25, 25]),
array([87, 17, 49, 74, 11, 34, 27, 23, 22, 83])], dtype=object)

In [24]: np.vstack(a)
Out[24]:
array([[68, 92, 84, 35, 14, 71, 55, 40, 21, 41],
[30, 90, 52, 64, 86, 68, 61, 85, 26, 98],
[98, 64, 23, 49, 13, 17, 52, 96, 97, 19],
[54, 26, 25, 22, 95, 77, 20, 73, 22, 80],
[15, 84, 91, 54, 25, 21, 37, 19, 25, 25],
[87, 17, 49, 74, 11, 34, 27, 23, 22, 83]])
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download