如何将ndarray转换为数组?

时间:2013-08-13 03:08:47

标签: python numpy multidimensional-array

我正在使用pandas.Series和np.ndarray。

代码就像这样

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

我试图把它转换成一维数组:

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

tt仍然是多维的,因为有两个'['。

那么如何才能真正将ndarray转换为数组呢?

搜索后,it says they are the same。但在我的情况下,他们的工作方式并不相同。

3 个答案:

答案 0 :(得分:26)

另一种方法是使用np.ravel

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

ravel优于flatten的重要性ravel仅在必要时复制数据,并且通常会返回视图,而flatten将始终返回数据的副本。< / p>

使用重塑来展平数组:

tt = t.reshape(-1)

答案 1 :(得分:4)

使用.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.])

编辑:正如所指出的,这会在每种情况下返回输入的副本。要避免副本,请按照@Ophion的建议使用.ravel

答案 2 :(得分:1)

tt = array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

oneDvector = tt.A1

这是解决双括号问题的唯一方法,即转换为矩阵的1D数组。