【问题标题】:ValueError: cannot copy sequence with size 5 to array axis with dimension 2ValueError:无法将大小为 5 的序列复制到维度为 2 的数组轴
【发布时间】:2016-01-02 03:00:30
【问题描述】:

使用 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 中相同的输出。

【问题讨论】:

    标签: python-2.7 numpy pandas


    【解决方案1】:

    我能够使用 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)
    

    【讨论】:

    • 我自己在有限的时间内无法解决这个问题,这样的答案很节省时间!
    猜你喜欢
    • 2013-09-12
    • 2021-07-24
    • 2020-10-15
    • 2016-09-20
    • 2023-03-06
    • 1970-01-01
    • 2017-10-13
    • 2021-10-12
    • 2020-05-04
    相关资源
    最近更新 更多