ValueError:新数组的总大小必须保持不变(重塑形式为numpy)

时间:2017-12-20 13:18:39

标签: numpy reshape

我想重塑我的数据向量,但是当我运行代码时

from pandas import read_csv
import numpy as np
#from pandas import Series
#from matplotlib import pyplot

series =read_csv('book1.csv', header=0, parse_dates=[0], index_col=0, squeeze=True)

A= np.array(series)
B = np.reshape(10,10)

print (B)

我发现了错误

  

result = getattr(asarray(obj),method)(* args,** kwds)

     

ValueError:新数组的总大小必须保持不变

我的数据

Month   xxx
1749-01 58
1749-02 62.6
1749-03 70
1749-04 55.7
1749-05 85
1749-06 83.5
1749-07 94.8
1749-08 66.3
1749-09 75.9
1749-10 75.5
1749-11 158.6
1749-12 85.2
1750-01 73.3
....    ....
....    ....

1 个答案:

答案 0 :(得分:1)

您尝试做的事情似乎有两个问题。第一个涉及你如何读取熊猫中的数据:

series = read_csv('book1.csv', header=0, parse_dates=[0], index_col=0, squeeze=True)
print(series)
>>>>Empty DataFrame
Columns: []
Index: [1749-01 58, 1749-02 62.6, 1749-03 70, 1749-04 55.7, 1749-05 85, 1749-06 83.5, 1749-07 94.8, 1749-08 66.3, 1749-09 75.9, 1749-10 75.5, 1749-11 158.6, 1749-12 85.2, 1750-01 73.3]

这并不是在数据框中为您提供一列浮点数,其中日期为索引,它将每行放入索引,日期和值。我认为你想添加delimtier=' '以便它正确地分割行:

series =read_csv('book1.csv', header=0, parse_dates=[0], index_col=0, delimiter=' ', squeeze=True)
>>>> Month
1749-01-01     58.0
1749-02-01     62.6
1749-03-01     70.0
1749-04-01     55.7
1749-05-01     85.0
1749-06-01     83.5
1749-07-01     94.8
1749-08-01     66.3
1749-09-01     75.9
1749-10-01     75.5
1749-11-01    158.6
1749-12-01     85.2
1750-01-01     73.3
Name: xxx, dtype: float64

这会为您提供日期作为' xxx'的索引。列中的值。

其次是重塑。在这种情况下,错误是非常具有描述性的。如果您想使用numpy.reshape,则无法重塑为与原始数据具有不同元素数量的布局。例如:

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])  # size 6 array

a.reshape(2, 3)
>>>> [[1, 2, 3],
      [4, 5, 6]]

这很好,因为数组的长度为6,我正在重塑为2 x 3,并且2 x 3 = 6。

但是,如果我尝试:

a.reshape(10, 10)
>>>> ValueError: cannot reshape array of size 6 into shape (10,10)

我收到了错误,因为我需要10 x 10 = 100个元素来重塑,而我只有6个。

如果没有完整的数据集,我们无法确切知道,但我认为这是您遇到的同样问题,尽管您将整个数据帧转换为numpy数组。