我正在運行某段代碼,在執行下面的代碼后,這個錯誤一直出現:
我正在運行某段代碼,在執行下面的代碼后,這個錯誤一直出現。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
X_train = []
y_train = []
for i in range(60, 2035)。
X_train=np.append(training_set_scaled[i-60:i, 0] )
y_train=np.append(training_set_scaled[i, 0] )
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)
錯誤:
TypeError: _append_dispatcher() 缺少1必需的位置引數。'value'
uj5u.com熱心網友回復:
numpy.append有兩個必要的引數,arr和values,但是你在這兩行中只給了它一個引數:
X_train=np.append(training_set_scaled[i-60:i, 0] )
y_train=np.append(training_set_scaled[i, 0] )
你需要同時指定你要追加的陣列和要追加的值。
uj5u.com熱心網友回復:
你似乎混淆了串列和陣列操作。 你的特殊錯誤發生在np.append。 你有沒有(重新)閱讀它的檔案? 當你遇到這樣的錯誤時,這應該是你要做的第一件事(在跑去向 SO 尋求幫助之前!)
你的意思是說,如果你不知道該怎么做,那么你就應該去做。
你說的 "一直出現 "是什么意思? 你是否一直在嘗試同樣的事情,希望下一次不會出現錯誤? 像這樣的錯誤并不是隨機的:)
首先,你要創建兩份檔案,一份是 "我的",一份是 "我的"。
首先你創建兩個串列:
X_train = [] 。
y_train = []
通常情況下,像這樣的串列是在一個回圈中使用的
for i in range(...)。
X_train.append(i)
重復地將一個值添加到串列中。 這可以就地取材。
但是在這個迭代中,你切換到了陣列:
for i in range(60, 2035)。)
X_train=np.append(training_set_scaled[i-60:i, 0] )
y_train=np.append(training_set_scaled[i, 0] )
np.append是不是一個串列追加的克隆。 好吧,你知道它回傳了一個新的值。 但是第二個值在哪里呢?
training_set_scaled[i-60:i, 0]
索引一個2D陣列,一個行的片斷,以及第1列。 這就是你的目的嗎? 還是說0應該在[]之外,并且是你添加到那個片斷的值? 如果沒有陣列的資訊和你的意圖,我們就不能說。
你還將np.append的結果分配給X_train。 這個變數現在是一個陣列,而它一開始是一個[]串列。 如果你只是想把這個值扔掉,為什么還要把X_train初始化到那個串列中。 或者,你是否打算這樣做:
X_train.append(training_set_scaled[i-60:i, 0] )
在X_train串列中添加一個陣列片斷?
接下來你將陣列包裹在np.array中。 為什么? np.append,如果它作業的話,回傳一個陣列。 沒有必要再把它 "變成 "一個陣列!
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0), X_train.shape[1], 1)
最后一步大概是給X_train添加一個尾部維度。
在下一個迭代中會發生什么? 你再次(試圖)將np.append結果分配給X_train。 這就扔掉了您在上一次迭代結束時辛苦創建的 X_train。
看起來你采用了串列追加的模式,并笨拙地將其轉換為陣列追加。 這不僅不可行,而且效率也很低。 串列追加的操作是在原地向串列添加參考。 np.append(和其他np.concatenate/stack函式),每次都會產生一個新的陣列,這是一個更昂貴的步驟。 通常,我們建議在回圈中堅持使用 list append,并在最后一次呼叫時生成陣列。
從根本上說,當構建這樣一個復雜的迭代時,請密切關注在回圈中發生在變數上的情況。 不要做假設。 在一個互動式會話中測驗代碼片段。 用print來檢查變數,密切注意型別和形狀/尺寸。 如果你喜歡,你也可以用除錯器來測驗回圈中的值。再說一遍--閱讀檔案!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326862.html
標籤:
上一篇:numba.core.errors.TypingError:whileusingnp.random.randint()
