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

nan*_*wda 7 numpy python-2.7 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

Man*_*ish 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)
Run Code Online (Sandbox Code Playgroud)

  • 我自己不可能在有限的时间内解决这个问题,这样的答案很节省时间! (2认同)