我正在使用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。但在我的情况下,他们的工作方式并不相同。
答案 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数组。