首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:无法将大小为13的序列复制到维度为200的数组轴

ValueError:无法将大小为13的序列复制到维度为200的数组轴
EN

Stack Overflow用户
提问于 2020-07-02 01:50:14
回答 1查看 669关注 0票数 0
代码语言:javascript
复制
DataReader = pd.read_csv('Quality.csv')
...
ip = [DataReader.x1, DataReader.x2, DataReader.x3, DataReader.x4,........., DataReader.x12, 
DataReader.x13]
op = DataReader.y
ip = np.matrix(ip).transpose()
op = np.matrix(op).transpose()

请帮助解决下面的错误。Python 3.7v和numpy 1.17v

代码语言:javascript
复制
Traceback (most recent call last):
File "Quality.py", line xx, in <module>
ip = np.matrix(ip).transpose()
File "\\defmatrix.py", line 147, in __new__
arr = N.array(data, dtype=dtype, copy=copy)
**ValueError: cannot copy sequence with size 13 to array axis with dimension 200**
EN

回答 1

Stack Overflow用户

发布于 2020-07-02 14:28:15

我们从一个200行14列的数据帧开始。它的.values属性(或to_numpy()方法结果)将是一个(200,14)形数组。

在:

代码语言:javascript
复制
ip = [DataReader.x1, DataReader.x2, ...DataReader.x13]

DataReader.x1是一个专栏,一个熊猫系列。它的.values是一个一维阵列,(200 )形状。我期望np.array(ip)是一个(13,200)数组。

如果你做了

代码语言:javascript
复制
ip.DataReader[['x1','x2',...,'x13']].values

结果将是一个(200,13)数组。

使用简单的数据帧,您的代码应该不会产生错误:

代码语言:javascript
复制
In [61]: df = pd.DataFrame(np.arange(12).reshape(4,3), columns=['a','b','c'])  
In [63]: df.values                                                                      
Out[63]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
In [65]: ip = [df.a, df.b, df.c]   
In [67]: np.array(ip)                                                                   
Out[67]: 
array([[ 0,  3,  6,  9],
       [ 1,  4,  7, 10],
       [ 2,  5,  8, 11]])

np.matrix(ip).transpose()也同样有效(尽管不需要使用np.matrix而不是np.array)。

我不能重现你的错误。从某些混合的赋形数组生成array会产生如下错误

代码语言:javascript
复制
ValueError: could not broadcast input array from shape (3) into shape (1)

或者在其他情况下是对象数组(of Series)。

====

对于一列,我希望得到的是一维数组,或者如果需要的话,可以重塑。

代码语言:javascript
复制
In [82]: df.a                                                                           
Out[82]: 
0    0
1    3
2    6
3    9
Name: a, dtype: int64
In [83]: df.a.values                                                                    
Out[83]: array([0, 3, 6, 9])
In [84]: df.a.values[:,None]                                                            
Out[84]: 
array([[0],
       [3],
       [6],
       [9]])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62682615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档