2017-04-01 3 views
-1

나는 오류 받고 있어요 :바꿀 NumPy와 사용하고 "배열은 변경해야합니다"오류

ValueError: total size of new array must be unchanged 

을 그리고 난 내 배열이 오류를 던져 변경되는 방법을 알아낼 수없는 것, 그리고 가리키는 마지막 줄 :

 1 data = hourlyElectricityForVisualization.values 
----> 2 data = data.reshape((len(data)/24/7),24*7)) 

참고 : 다음과 같이이 오류를 침전

data.shape = (2137,) 
len(data) = 2137 

내 코드입니다 :

hourlyElectricity = pd.read_excel('D:/hourlyElectricity.xlsx') 

index = (hourlyElectricity['startTime'] >= np.datetime64('2016-01-01')) & (hourlyElectricity['startTime'] < np.datetime64('2016-03-31')) 
hourlyElectricityForVisualization = hourlyElectricity.loc[index,'electricity-kWh'] 

print ("Data length: ", len(hourlyElectricityForVisualization)/24/7, " weeks") 
data = hourlyElectricityForVisualization.values 
data = data.reshape((len(data)/24/7,24*7) 

데이터 세트를 제공하기가 어렵습니다. 따라서 데이터를 포함하지 않은 모든 제안은 대단히 감사하겠습니다!

+1

2137은 24 * 7로 나눌 수 없으므로이 모양새 작업은 의미가 없습니다. – Julien

+0

(정수 나누기, 2137/24/7 * 24 * 7 = 2016) – Julien

+0

@Julien 수학을 작동시키기 위해'math.ceil' 연산자를 사용해도 될까요? – Gary

답변

1

N - 24 * 7 크기의 새로운 매트릭스에 맞추기 위해 일부 데이터 포인트를 삭제해야합니다. 다음과 같은 작업을 수행 할 수 있습니다

data = data[:(np.shape(data)[0] - np.shape(data)[0]%(24*7))] data = np.reshape(data, (len(data)/24/7, 24*7))

이 코드는 (24 * 7) 정수 데이터의 길이의 분열의 결과를 만들기 위해 지난 121 점을 삭제합니다.