Python Flatten An Array Of Array
I have an array of array, something like that: array([[array([33120, 28985, 9327, 45918, 30035, 17794, 40141, 1819, 43668], dtype=int64)], [array([33754, 24838, 1770
Solution 1:
Use a list comprehension, then convert back to array
:
>>> arr = array([[array([33120, 28985, 9327, 45918, 30035, 17794, 40141, 1819, 43668],
dtype='int64')],
[array([33754, 24838, 17704, 21903, 17668, 46667, 17461, 32665],
dtype='int64')],
[array([46842, 26434, 39758, 27761, 10054, 21351, 22598, 34862, 40285,
17616, 25146, 32645, 41276], dtype='int64')],
[array([24534, 8230, 14267, 9352, 3543, 29397, 900, 32398, 34262,
37646, 11930, 37173], dtype='int64')],
[array([25157], dtype='int64')],
[array([ 8859, 20850, 19322, 8075], dtype='int64')]], dtype=object)
>>> array([x for i in arr.tolist() for x in i[0].tolist()])
array([33120, 28985, 9327, 45918, 30035, 17794, 40141, 1819, 43668,
33754, 24838, 17704, 21903, 17668, 46667, 17461, 32665, 46842,
26434, 39758, 27761, 10054, 21351, 22598, 34862, 40285, 17616,
25146, 32645, 41276, 24534, 8230, 14267, 9352, 3543, 29397,
900, 32398, 34262, 37646, 11930, 37173, 25157, 8859, 20850,
19322, 8075])
>>>
Solution 2:
In [141]: array=np.array;
...: arr = array([[array([33120, 28985, 9327, 45918, 30035, 17794, 40141, 1819, 43668],
...: dtype='int64')],
...: [array([33754, 24838, 17704, 21903, 17668, 46667, 17461, 32665],
...: dtype='int64')],
...: [array([46842, 26434, 39758, 27761, 10054, 21351, 22598, 34862, 40285,
...: 17616, 25146, 32645, 41276], dtype='int64')],
...: [array([24534, 8230, 14267, 9352, 3543, 29397, 900, 32398, 34262,
...: 37646, 11930, 37173], dtype='int64')],
...: [array([25157], dtype='int64')],
...: [array([ 8859, 20850, 19322, 8075], dtype='int64')]], dtype=object)
In [142]: np.concatenate(arr.ravel())
Out[142]:
array([33120, 28985, 9327, 45918, 30035, 17794, 40141, 1819, 43668,
33754, 24838, 17704, 21903, 17668, 46667, 17461, 32665, 46842,
26434, 39758, 27761, 10054, 21351, 22598, 34862, 40285, 17616,
25146, 32645, 41276, 24534, 8230, 14267, 9352, 3543, 29397,
900, 32398, 34262, 37646, 11930, 37173, 25157, 8859, 20850,
19322, 8075])
The shape is 2d:
In[143]: arr.shapeOut[143]: (6, 1)
arr.ravel()
makes it 1d (6,), np.concatenate
joins a list (or iterable) of arrays.
Post a Comment for "Python Flatten An Array Of Array"