ValueError:无法将大小为5的序列复制到维度为2的数组轴

时间:2015-10-05 12:39:27

标签: python-2.7 numpy pandas

使用numpy 1.7.1,下面的代码可以正常工作并产生结果,

import pandas as pd
import numpy as np
d1 = pd.DataFrame({'Name': [1, 1, 1, 1, 1],'number': [1, 1, 1, 1, 1]})
d2 = pd.DataFrame({'Name': [1, 1, 1, 1, 1], 'number': [1, 1, 1, 1, 1]}) 
result =  np.array([d1,d2])

Value of result is,
array([    Name  number
0     1       1
1     1       1
2     1       1
3     1       1
4     1       1,
          Name  number
0     1       1
1     1       1
2     1       1
3     1       1
4     1       1], dtype=object)

但是,在numpy 1.9.2中,相同的输入会产生如下异常,

“ValueError:无法将大小为5的序列复制到维度为2的数组轴”

需要知道numpy不支持此操作的原因或者可以在这两个版本中使用的一些通用修补程序。在两个版本的numpy中,我想要与1.7.1中的相同类型的输出。

1 个答案:

答案 0 :(得分:6)

我能用numpy 1.9.2重现你的问题。似乎numpy试图做一个vstack。当形状相同时。我尝试了以下方法并且有效。

result = np.empty(2, dtype=object)
result[:]= [d1, d2]

result
array([    Name  number
0     1       1
1     1       1
2     1       1
3     1       1
4     1       1,
          Name  number
0     1       1
1     1       1
2     1       1
3     1       1
4     1       1], dtype=object)