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

Posted

技术标签:

【中文标题】ValueError:无法将大小为 5 的序列复制到维度为 2 的数组轴【英文标题】:ValueError: cannot copy sequence with size 5 to array axis with dimension 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 中相同的输出。

【问题讨论】:

【参考方案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)

【讨论】:

我自己在有限的时间内无法解决这个问题,这样的答案很节省时间!

以上是关于ValueError:无法将大小为 5 的序列复制到维度为 2 的数组轴的主要内容,如果未能解决你的问题,请参考以下文章

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

ValueError:无法重塑大小为 0 的数组

无法将列表转换为数据框。不断收到错误“ValueError: Must pass 2-d input.shape=(1, 4, 5)”

ValueError:无法将字符串转换为浮点数:''20,99''

ValueError:无法将字符串转换为浮点数:'62,6'

Numpy加载CSV - ValueError:无法将字符串转换为float