Gökhan Sever
Gökhan Sever

Reputation: 8492

Flatten numpy array

Is there a simple way in NumPy to flatten type object array?

I know .flatten() method flattens non-object type arrays constructed from same size arrays:

I1 a = np.array([[1],[2],[3]])

I2 a.flatten()
O2 array([1, 2, 3])

however, I can't get dtype=object array flattened:

I4 b
O4 array([[1], [2, 3], [3]], dtype=object)

I5 b.flatten()
O5 array([[1], [2, 3], [3]], dtype=object)

Thanks.

Upvotes: 30

Views: 44135

Answers (2)

jedrix
jedrix

Reputation: 63

In case when your array does not contain more than one nested array, np.hstack(arr) function won't work!

Workaround:

arr = np.array([[0]])
if arr.any():
    arr = np.hstack(arr)
else:
    arr = arr.flatten()

Upvotes: 0

nye17
nye17

Reputation: 13357

if you want [1,2,3,3], try this then

np.hstack(b)

Upvotes: 63

Related Questions