Expand/reshape Pandas 系列的列维度
Expand/reshape dimension of column of Pandas Series
我想将 pandas
系列从一维扩展到三维。下面 print(np.array(xs).shape)
给出了 (2,)
的输出,我希望 np.array(xs)
的形状为 (2,3,3)
,我该怎么办?
import pandas as pd
x = []
x.append(np.ones((3,3)))
x.append(np.zeros((3,3)))
xs = pd.Series(x)
print(np.array(xs).shape)
如有任何回复,我们将不胜感激!
注意:我知道 np.array(x)
会给我想要的输出和形状,但是我首先得到的是 xs
。预期输出应为 print(np.array(x))
,其形状为 (2,3,3)
.
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]])
您可以将 Series 转换为数据帧,然后连接并转换为 numpy 数组。最后将它整形为你需要的形状。
pd.concat(xs.apply(pd.DataFrame).tolist()).values.reshape(2,3,3)
Out[1081]:
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]])
您可以将 Series
转换为 list
,然后再转换为 array
:
print (np.array(xs.tolist()))
[[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]]
print (np.array(xs.tolist()).shape)
(2, 3, 3)
我想将 pandas
系列从一维扩展到三维。下面 print(np.array(xs).shape)
给出了 (2,)
的输出,我希望 np.array(xs)
的形状为 (2,3,3)
,我该怎么办?
import pandas as pd
x = []
x.append(np.ones((3,3)))
x.append(np.zeros((3,3)))
xs = pd.Series(x)
print(np.array(xs).shape)
如有任何回复,我们将不胜感激!
注意:我知道 np.array(x)
会给我想要的输出和形状,但是我首先得到的是 xs
。预期输出应为 print(np.array(x))
,其形状为 (2,3,3)
.
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]])
您可以将 Series 转换为数据帧,然后连接并转换为 numpy 数组。最后将它整形为你需要的形状。
pd.concat(xs.apply(pd.DataFrame).tolist()).values.reshape(2,3,3)
Out[1081]:
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]]])
您可以将 Series
转换为 list
,然后再转换为 array
:
print (np.array(xs.tolist()))
[[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]]
print (np.array(xs.tolist()).shape)
(2, 3, 3)