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.
3 Answers
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)
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.
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.