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) 0Use .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.