如何将ndarray转换为数组?

Sol*_*ong 27 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
>>>
Run Code Online (Sandbox Code Playgroud)

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

>>> tt = t.reshape((1,-1))
>>> tt
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
Run Code Online (Sandbox Code Playgroud)

tt仍然是多维的,因为有两倍'['.

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

搜索后,它说它们是相同的.但在我的情况下,他们的工作方式并不相同.

Dan*_*iel 28

另一种方法是使用np.ravel:

>>> np.zeros((3,3)).ravel()
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
Run Code Online (Sandbox Code Playgroud)

的重要性ravel比flatten是ravel只复制数据如果需要的话,通常会返回一个视图,而flatten总是返回数据的副本.

要使用重塑来展平数组:

tt = t.reshape(-1)
Run Code Online (Sandbox Code Playgroud)


nne*_*neo 5

使用.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.])
Run Code Online (Sandbox Code Playgroud)

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

  • `.flatten` 返回一个副本,而不是一个视图,所以它通常不应该是你的第一选择。 (2认同)