How to convert ndarray to array?

Question:

I’m using pandas.Series and np.ndarray.

The code is like this

>>> t
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> pandas.Series(t)
Exception: Data must be 1-dimensional
>>>

And I trie to convert it into 1-dimensional array:

>>> tt = t.reshape((1,-1))
>>> tt
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

tt is still multi-dimensional since there are double ‘[‘.

So how do I get a really convert ndarray into array?

After searching, it says they are the same. However in my situation, they are not working the same.

Asked By: SolessChong

||

Answers:

Use .flatten:

>>> np.zeros((3,3))
array([[ 0.,  0.,  0.],
       [ 0.,  0.,  0.],
       [ 0.,  0.,  0.]])
>>> _.flatten()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

EDIT: As pointed out, this returns a copy of the input in every case. To avoid the copy, use .ravel as suggested by @Ophion.

Answered By: nneonneo

An alternative is to use np.ravel:

>>> np.zeros((3,3)).ravel()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

The importance of ravel over flatten is ravel only copies data if necessary and usually returns a view, while flatten will always return a copy of the data.

To use reshape to flatten the array:

tt = t.reshape(-1)
Answered By: Daniel
tt = array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

oneDvector = tt.A1

This is the only approach which solved the problem of double brackets, that is conversion to 1D array that nd matrix.

Answered By: Jemshid KK